idea在运用DH密钥交换算法时出现“Unsupported secret key algorithm:AES”错误的解决办法
Idea在使用加密算法编程中的非对称密码时,用到的DH密钥交换算法出现以下错误信息:
Exception in thread "main" java.security.NoSuchAlgorithmException: Unsupported secret key algorithm: DES
at com.sun.crypto.provider.DHKeyAgreement.engineGenerateSecret(DHKeyAgreement.java:387)
at javax.crypto.KeyAgreement.generateSecret(KeyAgreement.java:648)
at DHUtil.getSecretKey(DHUtil.java:93)
at Main.main(Main.java:98)
密钥所用的算法不被支持,这个是由于JDK8 update 161之后,DH的密钥长度至少为512位,但AES算法密钥不能达到这样的长度,长度不一致所以导致报错。
解决的方法:
将 -Djdk.crypto.KeyAgreement.legacyKDF=true 写入JVM系统变量中,
将 -Djdk.crypto.KeyAgreement.legacyKDF=true 复制到VM options里面,重新运行程序就可以了。