sha-1、MD5、HMAC algorithms

本文全是网上抄过来的。

1、sha-1 和 MD5
      MD4(RFC1320) 是 MIT 的 RonaldL.Rivest 在 1990 年设计的,MD 是 MessageDigest 的缩写;MD5(RFC1321) 是 Rivest 于 1991 年对 MD4 的改进版本,将任意长的明文 hash 成 128 bit 的杂凑值。
      SHA1 是由 NIST NSA 设计为同 DSA 一起使用的,sha 是 Secure Hash algorithm 的缩写;它对长度小于 2^64 的输入,产生长度为 160bit 的散列值; SHA-1 设计时基于和 MD4 相同原理,并且模仿了该算法。
      不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要。
     
     参考:http://wenda.tianya.cn/wenda/thread?tid=7d8ae146f81491e7

      参考:http://blog.csdn.net/candy_whut/archive/2009/02/03/3859830.aspx

2、HMAC
      HMAC算法需要有一个hash算法和一个key。这个hash算法的实现需满足"data is hashed by iterating a basic compression function on blocks of data",算法简称为 H;key简称为 K
      假设
            B 是上面blocks的长度(byte)(B = 64 for MD5 and SHA-1);
            L 是key的长度(byte)(L=16 for MD5, L=20 for SHA-1);
            ipad = the byte 0x36 repeated B times;
            opad = the byte 0x5C repeated B times;
      K 可以是小于等于 B 的任意长度;如果 K 的长度大于 B,则 K = H(K)。建议 K 的长度不要小于 L,否则会降低算法的安全强度。此算法的公式:H(K XOR opad, H(K XOR ipad, text)),其中 text 为目标数据,具体步骤:
      (1), 在 K 后添加0使其长度达到 B;
      (2), 将 (1) 生成的 B 字节长的字符串与 ipad 做逐位异或运算;
      (3), 将 text 的字符流 append to (2) 生成的 B 字节长的字符串;
      (4), H 作用于 (3) 生成的字符流;
      (5), 将 (1) 生成的 B 字节长的字符串与 opad 做逐位异或运算;
      (6), 将 (4) 产生的哈希值 append to (5) 产生的 B 字节长的字符串;
      (7), H 作用于 (6) 生成的字符流。
      参考:
rfc2104

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值