XML签名通过规范化+分段摘要+SignedInfo整体签名的闭环验证保障完整性。具体为:对每个Reference数据规范化后计算摘要,比对DigestValue;再规范化SignedInfo并验证SignatureValue,任一不匹配即失败。

XML签名(XML Signature)是一种基于标准的数字签名机制,专门用于保障XML文档或其中部分内容的完整性、真实性和不可否认性。它不是简单地把整个XML文件哈希后加密,而是支持灵活选择签名目标(比如某个元素、多个节点,甚至外部资源),并能抵抗XML格式差异带来的干扰。
一个典型的XML签名包含在<signature></signature>元素中,主要由三部分构成:
<reference></reference>)及其摘要值(DigestValue);SignedInfo规范化后的结果,用私钥加密生成的数字签名;完整性不是靠“一次哈希”完成的,而是一套闭环验证逻辑:
<reference></reference>指定的数据,先做规范化(Canonicalization),消除空格、换行、属性顺序等无关差异;DigestValue比对——不一致说明该部分被篡改;SignedInfo块也做规范化+摘要,并用公钥解密SignatureValue,两者匹配才确认签名本身未被伪造;<amount>1000</amount>改成<amount>1001</amount>),所有相关摘要都会失效,验证直接失败。适应不同使用场景:
<signature></signature>元素本身不参与签名(通过enveloped-signature变换自动排除);<signature></signature>中,适合打包传输;光有流程不够,细节决定成败:
http://www.w3.org/2001/10/xml-exc-c14n#),否则两端计算的摘要永远对不上;KeyInfo可信性检查——要校验证书链、有效期、吊销状态;基本上就这些。XML签名不是黑盒,它的力量来自可验证、可组合、可细粒度控制的设计,但每一步都得走稳。
以上就是XML签名(XML Signature)是什么 怎么保证数据完整性的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号