古詩詞大全網 - 藝術簽名 - 什麽是SHA算法

什麽是SHA算法

和MD5算法類似,SHA (Security Hash Algorithm) 算法也是壹種信息摘要生成算法,SHA 是美國的 NIST 和 NSA 設計的壹種標準的 Hash 算法。

SHA-1 是第壹代 SHA 算法標準,後來的 SHA-224、SHA-256、SHA-384 和 SHA-512 被統稱為 SHA-2。

顯然,信息摘要越長,發生碰撞的幾率就越低,破解的難度就越大。但同時,耗費的性能和占用的空間也就越高。

如上所述,SHA-1和SHA-2是該算法不同的兩個版本,它們的構造和簽名的長度都有所不壹樣,可以把SHA-2理解為SHA-1的繼承者。

SSL行業選擇SHA作為數字簽名的散列算法,從2011到2015,壹直以SHA-1位主導算法。但隨著互聯網技術的提升,SHA-1的缺點越來越突顯。目前SHA-2已經成為新的標準,所以現在簽發的SSL證書,必須使用SHA-2算法簽名。也許有人偶爾會看到SHA-2 384位的證書,很少會看到224位,因為224位不允許用於公***信任的證書,512位,不被軟件支持。

下面是SSL證書的SHA-1和SHA-2簽名對比

兩者在表面上似乎沒有什麽特別,但是數字簽名對於SSL / TLS的安全性具有重要的作用。哈希值越大,組合越多,其安全性就越高,SHA-2比SHA-1安全的多。

加密哈希算法的壹個重要功能是產生獨特的散列,當兩個不同的值或文件可以產生相同的散列,則會產生所謂的碰撞。只有在不發生碰撞時,才能保證數字簽名的安全性。碰撞對於哈希算法來說是極其危險的,因為碰撞允許兩個文件產生相同的簽名。當計算機檢查簽名時,即使該文件未真正簽署,也會被計算機識別為有效的。

MD5的摘要的長度盡128bit,SHA-1摘要長度160bit。多出32bit意味著什麽呢?不同明文的碰撞幾率降低了2^32 = 324294967296倍。

由於SHA-1摘要比MD5摘要長,因而SHA-1生成摘要的性能比MD5略低。

我們先來回顧壹下MD5算法的核心過程,沒看過的小夥伴們可以點擊這個鏈接: 什麽是MD5算法

簡而言之,MD5把128bit的信息摘要分成A,B,C,D四段(Words),每段32bit,在循環過程中交替運算A,B,C,D,最終組成128bit的摘要結果。

再看壹下SHA-1算法,核心過程大同小異,主要的不同點是把160bit的信息摘要分成了A,B,C,D,E五段。

再看壹下SHA-2系列算法,核心過程更復雜壹些,把信息摘要分成了A,B,C,D,E,F,G,H八段。

其中SHA-256的每壹段摘要長度是32bit,SHA-512的每壹段摘要長度是64bit。SHA-224和SHA-384則是在前兩者生成結果的基礎上做出裁剪。

以壹個60M的文件為測試樣本,經過1000次的測試平均值,三種算法的表現為:

安全性方面,顯然SHA256(又稱SHA2)的安全性最高,但是耗時要比其他兩種多很多。MD5相對較容易碰撞,因此,SHA1應該是這三種中性能最好的壹款加密算法。