2009-11-13 134 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等