SHA家族

安全散列演算法（，縮寫為SHA）是一個密碼雜湊函數家族，是FIPS所認證的安全雜湊演算法。能計算出一個數位訊息所對應到的，長度固定的字串（又稱訊息摘要）的算法。且若輸入的訊息不同，它們對應到不同字串的機率很高。

SHA家族的演算法，由美國國家安全局（NSA）所設計，並由美國國家標準與技術研究院（NIST）發佈，是美國的政府標準，其分別是：
SHA-0：1993年发布，当时称做安全散列标准（Secure Hash Standard），发布之后很快就被NSA撤回，是SHA-1的前身。
SHA-1：1995年发布，SHA-1在許多安全協定中廣為使用，包括TLS、GnuPG、SSH、S/MIME和IPsec，是MD5的後繼者。但SHA-1的安全性在2010年以后已经不被大多数的加密场景所接受。2017年荷兰密码学研究小组CWI和Google正式宣布攻破了SHA-1。
SHA-2：2001年发布，包括SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。SHA-2目前沒有出現明顯的弱點。雖然至今尚未出現對SHA-2有效的攻擊，但它的演算法跟SHA-1基本上仍然相似。
SHA-3：2015年正式发布，由於對MD5出現成功的破解，以及對SHA-0和SHA-1出現理論上破解的方法，NIST感覺需要一個與之前演算法不同的，可替換的加密雜湊演算法，也就是現在的SHA-3。

 SHA函数对比 
下表中的中繼雜湊值（internal state）表示對每個資料區塊壓縮雜湊過後的中繼值（internal hash sum）。

+ SHA函数对比 算法和变体 輸出雜湊值長度（bits） 中繼雜湊值長度（bits） 資料區塊長度（bits） 最大輸入訊息長度（bits） 迴圈次數 使用到的運算子 碰撞攻击（bits） 性能示例(MiB/s) MD5（作为参考） 128  128  512  无限 64  And, Xor, Rot,  Or    335   160  160  512  264 − 1 80  And, Xor, Rot,  Or     -   160  160  512  264 − 1  80    192   SHA-224SHA-256  224256  256  512  264 − 1  64  And, Xor, Rot,  Or, Shr    139 SHA-384SHA-512   384512224 256  512  1024  2128 − 1  80  And, Xor, Rot,  Or, Shr    154   SHA3-224SHA3-256SHA3-384SHA3-512  224256384512  1600  11521088832576  无限 24 And, Xor, Rot, Not     - SHAKE128SHAKE256    13441088    -

 SHAd 

SHAd函數是一個簡單的相同SHA函數的重述：

SHAd-256(m)=SHA-256(SHA-256(m))。它會克服有關延伸長度攻擊的問題。

 参考文献 
 引用 

 来源 
 Eli Biham, Rafi Chen, Near-Collisions of SHA-0, Cryptology ePrint Archive, Report 2004/146, 2004 (to appear CRYPTO 2004) 
 Florent Chabaud, Antoine Joux: Differential Collisions in SHA-0. CRYPTO 1998. pp. 56–71.
 Henri Gilbert, Helena Handschuh: Security Analysis of SHA-256 and Sisters. Selected Areas in Cryptography 2003: pp. 175–193.

 外部链接 
 FIPS PUB 180-2，安全雜湊標準
 RFC 3174，美國安全雜湊演算法1（SHA1）
 這個Javascript SHA-1計算機會展示計算過程中的中繼值
 SHA-256在线格计算工具

 參見 

 编码
 密码学
 加密技术
 演算法
 图灵机
 图灵归约
 交互式证明系统
 隨機預言機
 MD5

Category:密码散列函数