2011-06-06 64 views
2

在MD5算法上,Rivest定義了四個輔助函數。有人能告訴我他們從哪裏來?
MD5輔助功能從哪裏來?

從MD5的RFC(http://www.ietf.org/rfc/rfc1321.txt)摘自:

我們首先定義四個輔助 功能,每個作爲輸入
3個32位的字,併產生作爲 輸出一個32位的字。

F(X,Y,Z)= XY v未(X)z
G(X,Y,Z)= XZ vý不(Z)
H(X,Y,Z)= X異或XORŸž
I(X,Y,Z)= Y XOR(X v未(Z))

預先感謝。

回答

0

它們本身不是「功能」。如果你是初學者,我可以理解爲什麼它很混亂。我可以告訴你 基本上,最簡單的方法是,在MD5,有步驟的地方轉移或周圍旋轉位。這種「修飾符」通常以宏而不是功能實現。對於RFC它們的定義如下

/* F, G, H and I are basic MD5 functions. 
*/ 
#define F(x, y, z) (((x) & (y)) | ((~x) & (z))) 
#define G(x, y, z) (((x) & (z)) | ((y) & (~z))) 
#define H(x, y, z) ((x)^(y)^(z)) 
#define I(x, y, z) ((y)^((x) | (~z))) 

通知中的描述(由您複製粘貼)和碼:

XY v未(X)z - >(((x)的&(Y ))|(( - x)&(z)))

如果它看起來「奇怪」,它只是(x & y)| (〜X & Z):常規位和,另一端,其中所述第一參數被否定而一個位或2個結果之間。

如果你真的很好奇是什麼都沒有,開始在調試模式下的項目,並MD5串並觀看在汽車和當地人窗戶(爲MSVS)的魔力。

請記住,沒有什麼可以阻止你使用內聯函數來代替,如果你願意的話。