如何在基于现代 OpenJDK 的 JVM (Semeru) 中添加对 PBEWithMD5AndTripleDES 算法的支持
How can I add support for PBEWithMD5AndTripleDES algorithm in modern OpenJDK based JVM (Semeru)
我正在尝试 运行 使用 Semeru 的一些遗留代码:
java -version
openjdk version "1.8.0_322"
IBM Semeru Runtime Open Edition (build 1.8.0_322-b06)
Eclipse OpenJ9 VM (build openj9-0.30.0, JRE 1.8.0 Linux amd64-64-Bit Compressed References 20220128_306 (JIT enabled, AOT enabled)
OpenJ9 - 9dccbe076
OMR - dac962a28
JCL - c1d9a7af7c based on jdk8u322-b06)
但是此代码依赖于 OpenJDK 中不再包含的专有 Oracle 密码,因此当 运行ning:
Cipher.getInstance("PBEWithMD5AndTripleDES");
我遇到异常:
Caused by: java.security.NoSuchAlgorithmException: Cannot find any provider supporting PBEWithMD5AndTripleDES
at javax.crypto.Cipher.getInstance(Cipher.java:543)
我试过将 Bouncy Castle 作为替代提供商,但没有成功。
是否有机会获得一些支持此功能的开源供应商?
我已经尝试将提供程序指定为 SunJCE,它应该按照以下内容包含:
cat /opt/java/openjdk/lib/security/java.security | grep security.provider
security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
security.provider.3=sun.security.ec.SunEC
security.provider.4=com.sun.net.ssl.internal.ssl.Provider
security.provider.5=com.sun.crypto.provider.SunJCE
security.provider.6=sun.security.jgss.SunProvider
security.provider.7=com.sun.security.sasl.Provider
security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.9=sun.security.smartcardio.SunPCSC
但是遇到同样的错误...
分享我自己的解决方案,以防其他人遇到同样的问题。
该密码实际上在 openjdk 编译(IBM Semeru Runtime Open Edition(build 1.8.0_322-b06))的 /lib/ext/sunjce_provider.jar 文件中可用。
正如在问题上发布的那样,它实际上在提供者列表中(索引 6),但未加载 jar。我还没有调查扩展类加载器是否有任何我不知道的变化,但是,到目前为止,手动将该 jar 添加到应用程序类路径已经完美地工作并且密码工作。
我正在尝试 运行 使用 Semeru 的一些遗留代码:
java -version
openjdk version "1.8.0_322"
IBM Semeru Runtime Open Edition (build 1.8.0_322-b06)
Eclipse OpenJ9 VM (build openj9-0.30.0, JRE 1.8.0 Linux amd64-64-Bit Compressed References 20220128_306 (JIT enabled, AOT enabled)
OpenJ9 - 9dccbe076
OMR - dac962a28
JCL - c1d9a7af7c based on jdk8u322-b06)
但是此代码依赖于 OpenJDK 中不再包含的专有 Oracle 密码,因此当 运行ning:
Cipher.getInstance("PBEWithMD5AndTripleDES");
我遇到异常:
Caused by: java.security.NoSuchAlgorithmException: Cannot find any provider supporting PBEWithMD5AndTripleDES
at javax.crypto.Cipher.getInstance(Cipher.java:543)
我试过将 Bouncy Castle 作为替代提供商,但没有成功。
是否有机会获得一些支持此功能的开源供应商?
我已经尝试将提供程序指定为 SunJCE,它应该按照以下内容包含:
cat /opt/java/openjdk/lib/security/java.security | grep security.provider
security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
security.provider.3=sun.security.ec.SunEC
security.provider.4=com.sun.net.ssl.internal.ssl.Provider
security.provider.5=com.sun.crypto.provider.SunJCE
security.provider.6=sun.security.jgss.SunProvider
security.provider.7=com.sun.security.sasl.Provider
security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.9=sun.security.smartcardio.SunPCSC
但是遇到同样的错误...
分享我自己的解决方案,以防其他人遇到同样的问题。
该密码实际上在 openjdk 编译(IBM Semeru Runtime Open Edition(build 1.8.0_322-b06))的 /lib/ext/sunjce_provider.jar 文件中可用。
正如在问题上发布的那样,它实际上在提供者列表中(索引 6),但未加载 jar。我还没有调查扩展类加载器是否有任何我不知道的变化,但是,到目前为止,手动将该 jar 添加到应用程序类路径已经完美地工作并且密码工作。