java实现DH密钥交换算法时出现“Unsupported secret key algorithm:AES”错误的解决办法

在应用不对称加密算法中的DH算法时出现了这样的报错提示:“Unsupported secret key algorithm:AES”,字面意思是密钥所用的算法不被支持。随后通过排查,发现是JDK版本的原因,由于JDK8 update 161之后,DH的密钥长度至少为512位,但AES算法密钥不能达到这样的长度,所以导致报错。

解决办法:

  1. 将-Djdk.crypto.KeyAgreement.legacyKDF=true 写入JVM系统变量中,可以在eclipse的run configurations里配置系统变量。

  2. 更换JDK版本,并在eclipse或者intellij idea中将所属过程的JDK版本换成JDK1.8以下版本。需要注意的是,在intellij idea中更改JDK版本后,需要将Project Language Level 一起更换,如下图所示:


    java实现DH密钥交换算法时出现“Unsupported secret key algorithm:AES”错误的解决办法_第1张图片
    图1

修改完成之后再次运行程序,即可正常打印DH加密和解密的值。

你可能感兴趣的:(java实现DH密钥交换算法时出现“Unsupported secret key algorithm:AES”错误的解决办法)