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

在java.security禁用MD5后Java代码仍可调用MD5算法的原因是什么?

问题原因

你添加的三个禁用算法配置仅作用于特定Java安全场景,未限制普通代码直接调用MD5哈希能力:

  • jdk.certpath.disabledAlgorithms:仅在证书路径校验场景生效,比如验证HTTPS证书链、签名证书有效性时,才会拒绝使用列表内的算法
  • jdk.jar.disabledAlgorithms:仅在JAR包签名校验场景生效,JVM验证jar包签名合法性时会禁用列表内算法
  • jdk.tls.disabledAlgorithms:仅在TLS通信协商场景生效,TLS握手时不会选择包含列表内算法的加密套件,不影响业务代码自主调用哈希算法

正确禁用全局MD5调用的方法

如果需要让MessageDigest.getInstance("MD5")直接抛出异常禁用普通调用,需要配置jdk.security.disabledAlgorithms参数:
注意:该参数从JDK 8u261、JDK 11及以上版本开始支持

  1. 永久生效:在$JAVA_HOME/lib/security/java.security文件中添加如下配置:
jdk.security.disabledAlgorithms=MD5
  1. 临时生效:启动Java程序时添加JVM参数即可:
java -Djdk.security.disabledAlgorithms=MD5 MD5

配置完成后运行测试代码就会抛出NoSuchAlgorithmException异常,符合禁用预期。


内容的提问来源于stack exchange,提问作者Ashutosh gupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:54:03