2009-11-13 57 views
3

我正在學習MD5算法。我發現有四個狀態變量(我不確定這意味着什麼)。這些變量是0x67452301,0xEFCDAB89,0x98BADCFE和0x10325476。我將變量轉換爲小數,並分別提出了1732584193,4023233417,2562383102和271733878。關於MD5狀態變量的問題

我的問題是,爲什麼這些數字?他們是特殊的數字嗎?

+0

他們肯定不看變量! – Grumdrig 2009-11-13 04:25:05

+0

@Grumdrig //哦......是的......他們看起來不像變數。我應該怎麼稱呼他們?常量?我使用'變量'是因爲... wiki和其他文檔說它們是變量.. – Moon 2009-11-13 04:26:24

+0

我會指出它們是兩對半字節的反轉,而一對是由低半字節組成的,其他的高8,每種幾乎排序。 – Grumdrig 2009-11-13 04:28:16

回答

6

參見RFC 1321,第3.3節:

3.3步驟3:初始化MD緩衝區

一個四字緩衝液(A,B,C,d)被用來計算消息摘要。 這裏每個A,B,C,D都是一個32位的寄存器。這些寄存器 初始化爲十六進制以下值,低位字節 第一個):

 word A: 01 23 45 67 
    word B: 89 ab cd ef 
    word C: fe dc ba 98 
    word D: 76 54 32 10 

它們拾取只是升降單十六進制數字,爲了(其似乎到的數字是一組令人愉快的任意初始值)。

由於他們寫第一個低位字節,當你用最少的顯著字節寫在,你會得到0x67452301等