封内签名
这种签名是将签名作为XML对象的子信息,也就是说 <Signature>是邮件中XML文件的子标签。封内数字签名的结构如下:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ceb:CEB311Message xmlns:ceb="http://www.chinaport.gov.cn/ceb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" guid="CEB311_HNZB_DWDZ_20210720174425_8277" version="1.0">
<ceb:Order>
<ceb:OrderHead></ceb:OrderHead>
<ceb:OrderList></ceb:OrderList>
</ceb:Order>
<ceb:BaseTransfer>
<ceb:copCode></ceb:copCode>
<ceb:copName></ceb:copName>
<ceb:dxpMode></ceb:dxpMode>
<ceb:dxpId></ceb:dxpId>
</ceb:BaseTransfer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>{{DigestValue}}</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>{{SignatureValue}}</ds:SignatureValue>
<ds:KeyInfo>
<ds:KeyName>{{KeyName}}</ds:KeyName>
<ds:X509Data>
<ds:X509Certificate>{{X509Certificate}}</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</ceb:CEB311Message>
封外签名
这种签名将XML文档包含到Signature对象,也就是说<Signature>标签是签名XML文件的根元素。封外签名结构如下:
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<DOMDocument>
..............
</DOMDocument>
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>{{DigestValue}}</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>{{SignatureValue}}</ds:SignatureValue>
<ds:KeyInfo>
<ds:KeyName>{{KeyName}}</ds:KeyName>
<ds:X509Data>
<ds:X509Certificate>{{X509Certificate}}</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
分离签名
这种情况下,签名是独立生成的不作为XML的一部分。也就是说你会拥有两个XML文件:一个待签名的XML文件,另一个是XML签名。
版权属于:大卫科技Blog
本文链接:https://www.iyuu.cn/archives/473/
转载时须注明出处