XML规范化与数字签名:保证文档完整性的底层协议
深入XML规范化(C14N)算法,结合XML签名生成防篡改文档。 · 难度:入门 · +10XP
XML规范化与数字签名:保证文档完整性的底层协议
XML签名依赖规范化消除语法差异(如空格、编码)。本教程阐述独占规范化(Exclusive C14N)如何避免命名空间干扰。然后使用XML数字签名语法(xmldsig-core)生成签名节点,并嵌入文档。实战演示使用OpenSSL生成密钥,对发票XML签名,并验证。理解签名结构:
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
<Reference URI="#invoice">
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
<DigestValue>...</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>...</SignatureValue>
</Signature>