SHA-256
SHA-256是SHA-2標(biāo)準(zhǔn)里最常見(jiàn)的一個(gè),能夠生成256位(32字節(jié))摘要值。注意標(biāo)準(zhǔn)文件使用了大端約定,包括輸入長(zhǎng)度和輸出都是大端。SHA-256的基本結(jié)構(gòu)和MD5是類似的,首先定義幾個(gè)操作。
(1)32位循環(huán)左右移:
(2)32位位操作:
(3)32、64位數(shù)的小端到大端轉(zhuǎn)換:
32位轉(zhuǎn)換用到了輸出值,所以寫成了一個(gè)函數(shù)。而64位不用留中間值,所以寫成一個(gè)宏。
SHA-256內(nèi)部維護(hù)32字節(jié)狀態(tài)、32字節(jié)臨時(shí)狀態(tài)、256字節(jié)輪中間值,為了處理任意長(zhǎng)度的數(shù)據(jù)還要設(shè)置64字節(jié)的緩存,輪中間值每一輪計(jì)算都要更新一次。由于和MD5(見(jiàn)前文)一樣,這里不再贅述,直接上代碼。
標(biāo)簽: