sha-1、MD5、HMAC algorithms

來源:互聯網
上載者:User

本文全是網上抄過來的。

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.