JDK1.9启用DES算法解决NoSuchAlgorithmException问题咨询
解决JDK 9中DES算法抛出
NoSuchAlgorithmException的问题 首先得纠正一个小误区:你之前修改的jdk.tls.legacyAlgorithms是用来控制TLS协议中允许的遗留算法,而你遇到的Unsupported secret key algorithm: DES是密钥加密算法层面的问题,得调整另一个配置项才行。
问题根源是JDK 9开始默认禁用了DES这类弱加密算法,直接调用就会抛出异常。下面是具体的解决步骤:
找到并修改JDK的安全配置文件
打开你提到的/usr/java/jdk-9.0.4/conf/security/java.security文件,找到jdk.crypto.legacyAlgorithms配置项(如果文件里没有这个项,直接新增一行即可)。在这个配置项的值里添加
DES,比如修改后看起来像这样:jdk.crypto.legacyAlgorithms=DES, DESede, RC2, RC4, RC5, DES_CBC, ...(保留原来已有的其他算法)注意要保留原来配置里的其他算法,只需要把
DES加进去就行。确认SunJCE Provider已启用
同样在这个文件里,找到以security.provider.开头的配置列表,确保其中包含:security.provider.2=com.sun.crypto.provider.SunJCE(数字2可能根据你的JDK版本略有不同,只要这个provider在列表里就行,它是DES算法的实现提供者)
重启应用验证
保存修改后的java.security文件,重启你的RMI客户端和相关应用,应该就不会再抛出NoSuchAlgorithmException了。
最后还是要提醒一句:虽然这个方法能解决遗留系统的问题,但DES确实是不安全的加密算法,后续有机会还是要逐步迁移到AES这类更安全的算法哦。
内容的提问来源于stack exchange,提问作者Lio
相关产品推荐
相关产品推荐

