WEB开发网
开发学院WEB开发Xml 网络传输中 XML 敏感信息的加密 阅读

网络传输中 XML 敏感信息的加密

 2010-10-22 17:18:25 来源:WEB开发网   
核心提示: 这里简单对 HMAC 的计算做简单的介绍,计算 HMAC 需要一个散列函数 hash(这里采用 MD5)和一个密钥 key( 这里采用随机字符串 SessionID),网络传输中 XML 敏感信息的加密(6),用 L 表示 hash 函数的输出字符串长(MD5 是 16 字节),用 B 表示数据

这里简单对 HMAC 的计算做简单的介绍。计算 HMAC 需要一个散列函数 hash(这里采用 MD5)和一个密钥 key( 这里采用随机字符串 SessionID)。用 L 表示 hash 函数的输出字符串长(MD5 是 16 字节),用 B 表示数据块的长度(使用 MD5 分割的数据块长度是 64 字节)。密钥 key 的长度应该小于等于数据块长度 B,如果大于 数据块长度,可以使用 hash 函数对 key 进行转换,结果是一个长度为 L 的 key,这样就满足了长度小于等于数据块长度 B 的条件。计算过程如 清单 6所示。

清单 6. 用户密码的 HMAC 值计算

 // 计算过程中需要如下两个长度为 B 的不同字符串:  
  o_key_pad = [0x5c * B] ⊕ key // ⊕ 为异或操作 
  i_key_pad = [0x36 * B] ⊕ key 
  password( 即用户密码 ) 的 HMAC 值等于该表达式的值:hash(o_key_pad, hash(i_key_pad , password));

这样,对得到的 password 的 HMAC 值转换成十六进制字符串形式就可以作为我们 AES 加密算法的密钥了。

Step 1.3. AES 加密和数据的十六进制字符串形式转换

把上个步骤中,由 password HMAC 值转换得到的十六进制字符串作为 AES 的密钥,调用标准的 AES 实现算法即可得到加密后的二进制数据。为了便于二进制形 式的数据便于通过 XML 等格式进行网络传输,我们把把加密后的二进制数据也转换到十六进制的字符串形式。转换到十六进制字符串的示例如 清单 7所示。

清单 7. 数据的十六进制字符串转换

加密后文件的十六进制表示 : 
  1234567890abcdef 
转换后的十六进制字符串形式 
  31323334353637383930616263646566   
 password 的值"PASSWORD"经过 Pack、AES 加密之后,转换为十六进制字符串形式为 
  78DFC347E201F24742030E4E03B8A034C83A4F072EA78DF6C63A9AF8DF06 
  E57D42D73DC00D3A01773D1AB8A9DBCE759CACC324BD23D141A0CE4F68 
  FAE6332970FD272250014A1C1CC82EB1637487A430 

上一页  1 2 3 4 5 6 7  下一页

Tags:网络传输 XML 敏感

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接