簡述Blake算法

在2007年,NIST開始向全球公開征集SHA-3標(biāo)準(zhǔn),最終Keccak算法當(dāng)選SHA-3標(biāo)準(zhǔn)。但在海選中也同樣存在著少優(yōu)秀的哈希函數(shù),Blake就是其中之一。今天我們就一起來了解一下Blake算法。

Blake算法簡介

Blake算法是基于ChaCha流密碼和采用標(biāo)準(zhǔn)HAIFA迭代模式的SHA-3候選算法之一,雖然最終沒能當(dāng)選,但它依舊是非常優(yōu)秀的。它比常見的 MD5、SHA-1、SHA-2算法更快,同時可以提供不低于SHA-3的安全性。因此,它可以在不耗費更多資源的情況下提供更好的安全性,是一個強調(diào)快速、安全與簡單的哈希算法。

Blake算法

Blake算法流程

Blake的主要計算流程有兩個,分別是預(yù)處理過程和輪循環(huán)計算,和SHA不同的是,Blake不需要對變量進行初始化,在輪循環(huán)計算過程,需要把計數(shù)器值、鹽值、常量和輸入消息加入輪循環(huán)計算中,按照壓縮計算法進行計算,每一輪生成的狀態(tài)變量用于下一輪循環(huán)計算。

預(yù)處理過程

前三步和SHA2的算法一樣,只有變量初始化

  1. 信息填充;
  2. 分割消息塊;
  3. 變量初始化。

Blake算法

通過公式計算出16個V,其中,計數(shù)器T的選取原則是當(dāng)最后一個消息塊不包含輸入消息的比特數(shù)時,則計數(shù)器為0;前面計數(shù)器的值為相應(yīng)消息塊中包含原始消息塊中比特數(shù)的累加。另外,鹽值S和常量C均為自定義,一般選取固定的。

循環(huán)壓縮計算

16個變量V,作為14輪循環(huán)壓縮的輸入,每一輪的循環(huán)壓縮表示為:

Blake算法

第r輪的第i個G功能函數(shù)的計算規(guī)則如下:

Blake算法

其中“+”表示模加運算,“>>>”表示有循環(huán)移位,σ是輸入的16個消息字或者常量的第幾個消息字,可以根據(jù)表格進行置換:

Blake算法

置換規(guī)則中r最大是10,后四輪的規(guī)則是當(dāng)前循環(huán)數(shù) mod 10 所得,如:第13輪的置換規(guī)則是σ13 mod 10=σ3。

最后經(jīng)過14輪循環(huán)壓縮得到16個變量,V0—V15,運算之后得到最終哈希值:

Blake算法

其中:0≤i≤7 , j= i mod 4,h_i^r表示第r輪哈希值的第i個字。

Blake算法的優(yōu)缺點

Blake算法擁有安全、快速的優(yōu)勢,并且算法比較簡單,但它沒有當(dāng)選SHA-3標(biāo)準(zhǔn)的原因是NIST認(rèn)為Keccak更具有抗ASIC的能力,并且Blake的計算流程和結(jié)構(gòu)與SHA-2過于類似。

免責(zé)聲明:素材源于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系刪稿。