技术开发 频道

XML加密标准

    【IT168 信息化

    XML Encryption Syntax and Processing标准也是W3C制定的关于如何用XML标签表示密文的语法,以及加密/解密操作应该遵循的规则的协议。该协议定义了三种加密的粒度:1)元素(element),用于把明文XML文件中的一个元素(包含标记),及其子元素的内容加密;2)内容(content),加密明文XML文件中某个元素的内容,他跟前面粒度的区别仅在于这种方式不加密标记(tag);3)整个文档,这时候明文被看成字节流,所以这种方式可以加密任何数据,包括非XML格式的数据。加密后的信息都放在<EncryptedData>标记中,该标记的语法如下:

    <EncryptionMethod>:描述加密算法。可选,如果没有这一项,则发送和接受方应该事先协商好加密算法。 

    <ds:KeyInfo>:描述密钥信息,如获取方式、别名等。可选,同上。 

    <CipherData>:加密数据,包括加密粒度、密文等。 

    <EncryptionProperties>:关于加密算法和密钥的附加信息。可选。 

    协议还允许把密钥也在同一个XML文件中传输。该密钥必须被加密后放在<EncryptedKey>标记中,关于<EncryptedKey>的语法这里不再描述。

    看一个简单的例子:

    <?xml version='1.0'?>

    <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" MimeType="text/xml">

    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>

    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">

    <ds:KeyName>MyKeyIdentifier</ds:KeyName>

    </ds:KeyInfo>

    <CipherData>

    <CipherValue>B457V645B45........</CipherValue>

    </CipherData>

    </EncryptedData>

    这个例子加密了一个外部XML文件,使用的加密算法是aes128-cbc,同时描述了用于解密的密钥标识(假定接受方知道如何通过该标识找到密钥)。接受方受到这个消息后根据密文(<CipherValue>里面的值)和密钥算出明文。

0
相关文章