You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:42:53