在应用不对称加密算法中的DH算法时出现了这样的报错提示:“Unsupported secret key algorithm:AES”,字面意思是密钥所用的算法不被支持。随后通过排查,发现是JDK版本的原因,由于JDK8 update 161之后,DH的密钥长度至少为512位,但AES算法密钥不能达到这样的长度,所以导致报错。
解决办法:
-
将-Djdk.crypto.KeyAgreement.legacyKDF=true 写入JVM系统变量中,可以在eclipse的run configurations里配置系统变量。
-
更换JDK版本,并在eclipse或者intellij idea中将所属过程的JDK版本换成JDK1.8以下版本。需要注意的是,在intellij idea中更改JDK版本后,需要将Project Language Level 一起更换,如下图所示:
图1
修改完成之后再次运行程序,即可正常打印DH加密和解密的值。
网友评论