sha256 演算法原理:
SHA-256 演算法輸入報文的最大長度不超過2^64 bit,輸入按512-bit 分組進行處理,產生的輸出是一個256-bit 的報文摘要。
該演算法處理包括以下幾步:
STEP1:附加填充位元。對報文進行填充使報文長度與448 模512 同餘(長度=448 mod 512), 填充的位元數範圍是1 到512,填充位元串的最高位為1,其餘位為0。就是先在報文後面加一個 1,再加很多個0,直到長度 滿足 mod 512=448.為什麼是448,因為448+64=512. 第二步會加上一個 64bit的 原始報文的 長度資訊。
STEP2:附加長度值。將用64-bit 表示的初始報文(填充前)的位長度附加在步驟1 的結果 後(低位位元組優先)。
STEP3:初始化快取。使用一個256-bit 的快取來存放該雜湊函式的中間及最終結果。 該快取表示為A=0x6A09E667 , B=0xBB67AE85 , C=0x3C6EF372 , D=0xA54FF53A, E=0x510E527F , F=0x9B05688C , G=0x1F83D9AB , H=0x5BE0CD19 。
STEP4:處理512-bit(16 個字)報文分組序列。該演算法使用了六種基本邏輯函式,由64 步迭代運算組成。每步都以256-bit 快取值ABCDEFGH 為輸入,然後更新快取內容。 每步使用一個32-bit 常數值Kt 和一個32-bit Wt。
sha256 演算法原理:
SHA-256 演算法輸入報文的最大長度不超過2^64 bit,輸入按512-bit 分組進行處理,產生的輸出是一個256-bit 的報文摘要。
該演算法處理包括以下幾步:
STEP1:附加填充位元。對報文進行填充使報文長度與448 模512 同餘(長度=448 mod 512), 填充的位元數範圍是1 到512,填充位元串的最高位為1,其餘位為0。
就是先在報文後面加一個 1,再加很多個0,直到長度 滿足 mod 512=448.
為什麼是448,因為448+64=512. 第二步會加上一個 64bit的 原始報文的 長度資訊。
STEP2:附加長度值。將用64-bit 表示的初始報文(填充前)的位長度附加在步驟1 的結果
後(低位位元組優先)。
STEP3:初始化快取。使用一個256-bit 的快取來存放該雜湊函式的中間及最終結果。
該快取表示為A=0x6A09E667 , B=0xBB67AE85 , C=0x3C6EF372 , D=0xA54FF53A,
E=0x510E527F , F=0x9B05688C , G=0x1F83D9AB , H=0x5BE0CD19 。
STEP4:處理512-bit(16 個字)報文分組序列。該演算法使用了六種基本邏輯函式,由64
步迭代運算組成。每步都以256-bit 快取值ABCDEFGH 為輸入,然後更新快取內容。
每步使用一個32-bit 常數值Kt 和一個32-bit Wt。