<EncryptedData>元素
仔细看看<EncryptedData>元素的树形结构,你会发现<EncryptedData>元素下分解出了很多子元素。其中<KeyInfo>元素与xml数字签名中的<KeyInfo>元素是相同的。
EncryptedData元素被包含在“http://www.w3.org/2001/04/xmlenc#”命名空间中。它是被加密数据的根元素。
EncryptionMethod元素指定加密数据的对称方法。做这件事需要使用一个包含了w3 url的算法属性 - “http://www.w3.org/2001/04/xmlenc#aes256-cbc”,它指出数据是用AES(Rijndael)以256k的密钥加密的。
KeyInfo元素来自xml数字签名,它保存着对称密钥的信息,除此之外该元素还能保存更多的信息。
KeyInfo元素下的EncryptedKey元素及其子元素包含着关于被保存的密钥的信息。
KeyInfo下的EncryptionMethod元素包含的非对称加密方法用来加密对称密钥。做这件事需要把一个算法属性设置给w3 url。例如:“http://www.w3.org/2001/04/xmlenc#rsa-1_5”说明使用了RSA非对称算法来加密对称密钥。
KeyName元素是一个标识符,用来发现密钥。稍后在我们编程的时候你将会发现它的重要性。
CipherData元素和CipherValue元素出现在EncryptedKey元素和EncryptedData元素下,它们包含着密码数据。事实上密码数据保存在CipherValue元素下的。EncryptedKey元素下保存的是被加密的密钥,EncryptedData元素下的CipherValue保存的是被加密的数据。
非对称xml加密步骤
xml加密的过程可以概括为以下五步:
1、选择xml文档中的一个元素(选择根元素的话将加密整个文档)
2、使用一个对称密钥加密元素
3、使用非对称加密来加密上面那个对称密钥(使用公开密钥)
4、创建一个EncryptedData元素,该元素下将包含被加密的数据和被加密的密钥
5、用加密后的元素替换掉初始元素。
这些步骤的大部分都可以使用.net 2.0中的类自动完成。
非对称xml解密步骤
xml解密的过程可以概括为以下四步:
1、在xml文档中选择一个EncryptedData元素
2、使用一个非对称密钥来解密密钥(使用私有密钥)
3、使用未加密的密钥来解密数据
4、把EncryptedData元素替换成未加密的元素
这些步骤的大部分都可以使用.net 2.0中的类自动完成。
命名空间
完成xml的加密,我们需要引入三个命名空间
System.Xml - 包含操作xml的类
System.Security.Cryptography - 包含生成加密密钥的类
System.Security.Cryptography.Xml - 包含完成加密任务的类
.分页: [1] [2] [3]
TAG: ASP.NET XML 加密 解密