使用Java实现DH函数时出现"Unsupported secret key algorithm: AES"错误

出现的错误及原因

今天在使用Java实现DH密钥交换函数时出现了 "java.security.NoSuchAlgorithmException: Unsupported secret key algorithm: AES"这样的错误。出错的原因在于:DH密钥长度至少为512位,而AES算法密钥没有这么长,密钥长度不一致引起的。

解决方式

在JVM中配置系统变量

可以通过在JVM中配置系统变量为:
“-Djdk.crypto.KeyAgreement.legacyKDF=true”
1.配置方式:右键你的类,找到运行方式,点击运行配置
运行配置位置
2.在运行配置中选择自变量一栏,在VM自变量框中复制
“-Djdk.crypto.KeyAgreement.legacyKDF=true”配置变量
然后保存,应用,问题则解决。该种方法只对当前设置的Java类生效

在jre中配置缺省VM变量

1.点击窗口,选择首选项
选择首选项
2.编辑当前使用的jre
选择当前jre,并点击编辑
在缺省值中填写参数
点击完成,则配置生效。该种方法对当前开发环境中的运行的java程序皆有效。若同时配置了jre中的VM参数和Java运行程序的VM参数,则只有jre的配置生效。

在可运行jar包中如何配置

若需要在将程序导出为可运行jar包,则需要在运行时采用命令提示符运行,在运行时添加VM参数,运行命令为:
java -jar -Djdk.crypto.KeyAgreement.legacyKDF=true jar包的名字.jar

在可执行文件中如何配置

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值