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

如何修复com.itextpdf:itextpdf:5.5.13.3中的SHA-1与MD5不安全算法问题?

解决iTextPDF 5.x版本中SHA-1/MD5不安全算法报错问题

问题根源

iText 5.x的部分默认操作(比如PDF签名、哈希校验)依赖SHA-1、MD5这类已被标记为不安全的算法,单纯更换5.x系列的子版本不会改变这个默认行为,所以你试多个版本后仍会遇到报错。

具体解决方案

  • 替换签名场景的哈希算法
    如果是PDF签名导致的报错,直接显式指定SHA-256及以上的安全算法,替代默认的SHA-1/MD5:
PdfStamper stamper = PdfStamper.createSignature(reader, os, '\0');
PdfSignatureAppearance appearance = stamper.getSignatureAppearance();
// 指定SHA-256签名算法
appearance.setSignatureAlgorithm(PdfName.ADBE_PKCS7_SHA256);
// 也可以用更安全的SHA-512
// appearance.setSignatureAlgorithm(PdfName.ADBE_PKCS7_SHA512);
  • 自定义哈希计算逻辑
    如果是文档哈希校验等其他场景,自己实现基于SHA-2系列算法的哈希计算,替换iText默认的旧算法逻辑:
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(documentBytes);
// 用这段逻辑替代iText原生的MD5/SHA-1计算代码
  • 升级到iText 7(推荐)
    iText 7对安全算法的支持更完善,默认优先使用SHA-2系列算法,从根源上减少旧不安全算法的依赖。如果项目允许,直接切换到com.itextpdf:itext7-core的最新稳定版本。

额外注意事项

  • 要是涉及第三方证书,得确保证书本身支持SHA-2系列签名算法,不然代码指定了也会报错。
  • 检查项目里其他依赖是否也在使用SHA-1/MD5,别误把其他依赖的问题当成iText的锅。

内容的提问来源于stack exchange,提问作者Akshit Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:59:53