Keccak的攪拌函式f

2021-08-28 09:03:59 字數 1290 閱讀 9641

一 點睛

keccak的攪拌函式f實際上應該叫作keccak-f[b],從這個名字可以看出,這個函式帶有乙個引數b,即內部狀態的位元長度。這裡的引數b稱為寬度(width)。

根據keccak的設計規格,寬度b可以取25、50、100、200、400、800、1600共7種值,sha-3採用的是其中的最大寬度,即b=1600.寬度b的7種取值的排列規律如下:這7個數字都是25的整數倍,即25的1倍、2倍、4倍、8倍、16倍、32倍、64倍。一片slice的大小為5*5=25個位元,因此b/25就相對於slice的片數(即lane的長度)。sha-3的內部狀態大小為b=5*5*64=1600個位元。

由此可見,在keccak中,通過改變寬度b就可以改變內部狀態的位元長度。但無論如何改變,slice的大小依然是5*5,改變的只是lane的長度而已,因此keccak寬度的變化並不會影響其基本結構。keccak的這種結構稱為套娃結構,這個名字取自著名的俄羅斯套娃,每個娃娃的形狀都是相同的,只是大小不同而已。利用套娃結構,可以很容易地製作乙個縮水版keccak模型並嘗試對其進行破解,以便對該演算法的強度進行研究。

二 keccak-f[b]步驟

keccak-f[b]中的每一輪包含5個步驟:西塔、柔、派、凱、伊歐塔。具體到sha-3中所使用的keccak-f[1600]函式,共迴圈24輪。

1 步驟西塔

將位置不同的兩個column中各自5個位元通過xor運算加起來,然後再與置換目標位元求xor並覆蓋掉目標位元。

2 步驟柔

這一步操作是沿z軸(lane方向)進行位元平移。

3 步驟派

下圖所示為對其中1片slice應用步驟派時的情形,實際上整條lane上的所有slice都會被執行統一的位元移動操作。

4 步驟凱

下圖所示為其中1個row應用步驟凱的情形。這裡使用了一些邏輯電路中的符號。

5 步驟伊歐塔

是用乙個固定的輪常數對整個state的所有位元進行xor運算,目的是讓內部狀態具備非對稱性。

關於單向雜湊函式和Keccak的攻擊

一 對keccak的攻擊 keccak之前的單向雜湊函式都是通過迴圈執行壓縮函式的方式來生成雜湊值,這種方式稱為md結構。md4 md5 ripemd riprmd 160 sha 1 sha 2等幾乎所有的傳統單向雜湊函式都是基於md結構的。當初之所以開始徵集sha 3演算法,就是因為針對當時廣泛...

F 的建構函式

f 的建構函式 f 是.net中的函式程式語言,雖然,為了跟其它.net語言有更好的協作關係,f 本身也有相當的物件導向的功能,但是並不完整,有一些功能限制。譬如,不支援 protected 訪問控制。再如,或算是一種特色,多建構函式中,必須其中乙個為主建構函式,而其他建構函式只能呼叫主建構函式,這...

推流式攪拌器選型功率計算方法 攪拌功率的輔助計算

3 1cap 攪拌功率輔助計算 要說寫攪拌的這個緣起,說起來長了。簡單的說,就是專案領導拍腦袋和製造單位確定了攪拌裝置的各種引數,導致了攪拌效果和攪拌功率經不起推敲。經過老沙彌歷時6個多月曲線救國,事情終於算是告一段落。現在算是總結起來,共享之。一 攪拌器的型式 要計算攪拌的功率,少不了要先認識攪拌...