JAVA JDK1.9 java.security.NoSuchAlgorithmException:不支持的密钥算法:DES

时间:2018-04-11 15:19:28

标签: java security

我有一个api谁使用DES我知道是坏事...但我无法改变这一点,我必须支持这个旧的遗留系统(我有一个rmi客户端部分我的身边)

我也想找到一种方法来在jdk1.9上启用DES算法 我的程序在旧的jdk上运行良好

我正在四处看看 /usr/java/jdk-9.0.4/conf/security/java.security 和价值:jdk.tls.legacyAlgorithms

但是我不知道如何修改我尝试的默认值

dk.tls.legacyAlgorithms= \
        K_NULL, C_NULL, M_NULL, \
        DH_anon, ECDH_anon, \
        RC4_128, RC4_40, DES_CBC, DES40_CBC, \
        3DES_EDE_CBC, \
        DES_CBC, \
        DES

和somme其他值,但没有成功

完整堆栈跟踪

java.security.NoSuchAlgorithmException: Unsupported secret key algorithm: DES
    at java.base/com.sun.crypto.provider.DHKeyAgreement.engineGenerateSecret(DHKeyAgreement.java:387)
    at java.base/javax.crypto.KeyAgreement.generateSecret(KeyAgreement.java:660)
    at com.adesoft.security.EncryptedPassword._cipher(Unknown Source)
    at com.adesoft.security.EncryptedPassword.cipher(Unknown Source)
    at com.adesoft.login.WebSessions.connect(Unknown Source)
    at com.adesoft.beans.SessionBean.setPassword(Unknown Source)
    at util.ade.AdeSebastient.getRWConnection(AdeSebastient.java:59)

adesoft是我的传统rmi客户端 util.ade.AdeSebastien - >我在哪里使用客户端尝试连接到我的rmi系统

如果索姆一个人知道这个困难 感谢

1 个答案:

答案 0 :(得分:1)

对于其他有相同难度的人

我将此参数传递给jdk -Djdk.crypto.KeyAgreement.legacyKDF=true

框架游戏是这样完成的 play2 -jvm-debug 9999 ~run -Djdk.crypto.KeyAgreement.legacyKDF=true

我现在看一下,如果不能把它放在jdk

的安全文件中