首页 > 解决方案 > 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.providersun.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 中的硬件解决?

提前致谢

标签: javaperformanceopenjdk-11openj9

解决方案


我们发布了一个包来改进这一点 - 使用 AmazonCorrettoCryptoProvider 进行一般加密增强。

https://aws.amazon.com/blogs/opensource/introducing-amazon-corretto-crypto-provider-accp/

该项目正在进行 - https://github.com/corretto/amazon-corretto-crypto-provider

结果的反馈/比较,将不胜感激。Java 中的加密实现不断发展。


推荐阅读