java - OpenJ9 MD5 实现
问题描述
我们的一位客户已从 IBM J9 (Java 8) 迁移
IBM J9 VM (build 2.8, JRE 1.8.0 Linux amd64-64 Compressed References 20160427_301573 (JIT enabled, AOT enabled)
J9VM - R28_Java8_SR3_20160427_1620_B301573
JIT - tr.r14.java.green_20160329_114288
GC - R28_Java8_SR3_20160427_1620_B301573_CMPRSS
J9CL - 20160427_301573)
JCL - 20160421_01 based on Oracle jdk8u91-b14
到 Java 11
openjdk version "11.0.11" 2021-04-20 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.11+9-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.11+9-LTS, mixed mode, sharing)
他们已将安全提供程序从 更改com.ibm.crypto.provider
为sun.security.provider
,并且他们注意到签名 JWT 功能中的性能问题,在 JDK11 中大部分时间都花在 MD5 类上,坏消息是 IBM JDK 已弃用并禁用 MD5,第二个消息是 MD5 on java 很慢,它是用java编写的。我们已经下载并检查了 IBM JDK 的 MD5 实现,它充满了本机调用、二进制移位和内在代码,然后我们在Javadoc中找到了该类的内容,它简单地说:
This is done via a hardware crypto call.
当 IBM 使用某种 CPU 加密模块时,OpenJDK 使用 Java 代码生成 MD5 哈希。我在 Sun、IBM 或 bouncycastle 实现中找不到任何好的 MD5 基准。知道这是否也可以通过 OpenJ9 中的硬件解决?
提前致谢
解决方案
我们发布了一个包来改进这一点 - 使用 AmazonCorrettoCryptoProvider 进行一般加密增强。
https://aws.amazon.com/blogs/opensource/introducing-amazon-corretto-crypto-provider-accp/
该项目正在进行 - https://github.com/corretto/amazon-corretto-crypto-provider
结果的反馈/比较,将不胜感激。Java 中的加密实现不断发展。
推荐阅读
- java - while循环内的整数数组列表拒绝打印
- c - 为什么没有这行代码: char *n = malloc(sizeof(int)); 抛出错误?
- c# - UWP:垃圾收集 Gen 2 仍然发生在 NoGCRegion 内
- oracle - 插入 Oracle Forms Builder 后如何获取时间 sysdate 时间
- angular - Angular 和 Laravel 身份验证 JWT?
- html - 如何从 blospot 主题(网络)中删除左侧和右侧的空白区域?
- python - 在pyqt5 / python 3中关闭主GUI窗口时如何关闭子线程?
- javascript - 如何使用 javascript 在 People Array 中找到最年长的人
- r - download.file() 下载损坏的 xls
- r - R Shiny 不会使用 textOutput 输出变量