关于MD5状态变量的问题

发布于 2024-08-11 00:51:05 字数 191 浏览 3 评论 0原文

我正在研究MD5算法。我发现有四个状态变量(我不确定这意味着什么)。这些变量是 0x67452301 、 0xEFCDAB89 、 0x98BADCFE 和 0x10325476 。我将变量转换为小数,分别得到 1732584193、4023233417、2562383102 和 271733878。

我的问题是,为什么是这些数字?它们是特殊数字吗?

I am studying MD5 algorithm. I found out that there are four state variables (I am not sure what that means). Those variables are 0x67452301 , 0xEFCDAB89, 0x98BADCFE, and 0x10325476. I converted variables to decimals and came up with 1732584193, 4023233417, 2562383102, and 271733878 resepectively.

my question is, why those numbers? Are they special numbers?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

池木 2024-08-18 00:51:05

请参阅 RFC 1321,第 3.3 节:

3.3 步骤3.初始化MD缓冲区

四字缓冲区(A、B、C、D)用于计算消息摘要。
这里A、B、C、D都是一个32位寄存器。这些寄存器是
初始化为以下十六进制值,低位字节
第一):

<前><代码>字A:01 23 45 67
字 B:89 ab cd ef
C字:fe dc ba 98
D字:76 54 32 10

他们选择的数字只是按顺序升序和降序的单个十六进制数字(这似乎是一组令人愉快的任意初始值)。

由于他们首先写入低位字节,因此当您在右侧写入最低有效字节时,您会得到0x67452301等。

See RFC 1321, section 3.3:

3.3 Step 3. Initialize MD Buffer

A four-word buffer (A,B,C,D) is used to compute the message digest.
Here each of A, B, C, D is a 32-bit register. These registers are
initialized to the following values in hexadecimal, low-order bytes
first):

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

The numbers they picked are just ascending and descending single hexadecimal digits, in order (which seems to be a delightfully arbitrary set of initial values).

Since they wrote the low-order bytes first, when you write it with the least significant bytes on the right, you get 0x67452301, etc.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文