【Web】MAC算法?HMAC算法?MD算法?SHA算法?(轉載)


什麼是MAC算法?
Message Authentication Code,消息認證碼算法

含有密鑰散列函數算法,兼容MD和SHA算法的特性,並在此基礎上加上了密鑰。因此MAC算法也經常被稱作HMAC算法。

截自:消息摘要算法-MAC算法系列



什麼是MD算法?
message Digest,消息摘要

一、java提供的MD2和MD5算法應用


二、BouncyCastle補充的MD4算法的應用

三、Commons Codec提供的實現
Commons Codec提供消息摘要的工具類-----DigestUtils類。 DigestUtils類是對Sun提供的MessageDigest類的一次封裝,提供了MD5和SHA系列消息摘要算法的實現。





什麼是SHA算法?
Secure Hash Algorithm,安全哈希算法

主要適用於數字簽名標準(Digital Signature Standard DSS)裡面定義的數字簽名算法(Digital Signature Algorithm DSA)。對於長度小於 2^64 位的消息,SHA1 會產生一個 160 位的消息摘要。

該算法的思想是接收一段明文,然後以一種不可逆的方式將它轉換成一段(通常更小)密文,也可以簡單的理解為取一串輸入碼(稱為預映射或信息),並把它們轉化為長度較短、位數固定的輸出序列即散列值的過程。


SHA-1 有兩個特點:

  1. 不可以從消息摘要中復原信息
  2. 兩個不同的消息,不會產生同樣的消息摘要



SHA-1 與 MD5 的比較
因為二者均由 MD4 導出,SHA-1 和 MD5 彼此很相似。相應的,他們的强度和其他特性也是相似,但還有以下幾點不同:

1.對强行攻擊的安全性
最顯著和最重要的區别是 SHA-1 摘要比 MD5 摘要長 32 位。使用强行技術,產生任何一個報文使其摘要等於給定報摘要的難度度對 MD5 是 2^128 數量級的操作,而对 SHA-1 则是 2^160 數量級的操作。這樣,SHA-1 對強行攻擊有更大的强度。

2.對密碼分析的安全性
由于 MD5 的設計,易受密碼分析的攻擊,SHA-1 顯得不易受這樣的攻擊。

3.速度
在相同的硬件上,SHA-1 的運行速度比 MD5 慢。

截自: MD(Message Digest ) 消息摘要算法之SHA