SHA (Security Hash Algorithm) 是美國的 NIST 和 NSA 設計的一種標準的 Hash 算法,SHA 用於數字簽名的標準算法的 DSS 中,也是安全性很高的一種 Hash 算法。算法
1)SHA-1
SHA-1 算法的輸入消息長度小於 264bit,最終輸出的結果值是 160 Bits,SHA-1 與 MD4 相比較而言,主要增長了擴展變換,將前一輪的輸出也加到了下一輪,這樣增長了雪崩效應,並且因爲其 160 Bits 的輸出,對窮舉***更具備抵抗性。
大體實現過程:將消息摘要轉換成位字符串,對轉換後的位字符串進行補位操做,附加長度值而且初始化緩存,而後計算消息摘要。緩存
2)SHA-256 算法
SHA-256 算法輸入報文的最大長度不超過 264 Bits,輸入按 512 Bits 分組進行處理,產生的輸出是一個 256 Bits 的報文摘要。安全
算法處理步驟:ide
一、附加填充位
對報文進行填充使報文長度與 448 模 512 同餘(長度 = 448 mod 512), 填充的比特數範圍是 1 到 512,填充比特串的最高位爲 1,其他位爲 0。 就是先在報文後面加一個 1,再加不少個 0,直到長度知足 mod 512=448。爲何是 448?由於 448+64=512。第二步會加上一個 64 位的原始報文的長度信息。函數
二、附加長度值
將用 64 位表示的初始報文(填充前)的位長度附加在步驟 1 的結果後(低位字節優先)。學習
4.處理 512 位報文分組序列
該算法使用了六種基本邏輯函數,由 64 步迭代運算組成。每步都以 256 位緩存值 ABCDEFGH 爲輸入,而後更新緩存內容。每步使用一個 32 位常數值 Kt 和一個 32 位 Wt。加密
3)SHA-2的其餘衍生算法
包括SHA-22四、SHA-25六、SHA-38四、SHA-512,這些版本共同構成了SHA你們庭。
SHA-224:SHA-256的「閹割版」,能夠生成長度224bit的信息摘要。
SHA-512:能夠生成長度512bit的信息摘要。
SHA-384:SHA-512的「閹割版」,能夠生成長度384bit的信息摘要。
SHA家族的最新成員SHA-3已經於2015年問世。關於SHA-3的細節,有興趣的小夥伴們能夠查詢資料進一步學習。設計
1)主類MainActivity
經過調用自定義的SHA算法把要加密的數據傳進去,而後使用自定義的byteArr2HexStr方法進行遍歷拼接;blog
2)SHA類
使用getInstance方法獲取不一樣的算法,每隔算法的大體實現都是同樣的,惟一不一樣的就是使用getInstance獲取到的算法不同;ip
代碼都同樣,惟一的區別是使用getInstnce獲取到的算法不同;
一、介紹SHA系列相關的算法以及實現原理。二、分析SHA算法代碼以及演示運行效果。