在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))
預先感謝。
在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))
預先感謝。
它們本身不是「功能」。如果你是初學者,我可以理解爲什麼它很混亂。我可以告訴你 基本上,最簡單的方法是,在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)的魔力。
請記住,沒有什麼可以阻止你使用內聯函數來代替,如果你願意的話。