rfc md5 vs. GNU md5sum
-
Hallo,
Mir ist gerade aufgefallen, dass die Referenzimplementierung von der IETF
(http://www.ietf.org/rfc/rfc1321.txt) andere werte aus gibt, als md5sum
(md5sum (GNU coreutils) 8.5).Ist md5sum nicht standardkonform oder hat sich in dem 2 Jahrzehnten etwas am MD5 Algorithmus verändert so dass die IETF-Version als veraltet angesehen werden kann?
MfG
-
kpl. vllt. liegts an den
* Load magic initialization constants. */ context->state[0] = 0x67452301; context->state[1] = 0xefcdab89; context->state[2] = 0x98badcfe; context->state[3] = 0x10325476; }
ist doch bei crc32 auch so, dort ist der algo auch der gleiche, wird aber aus welchen gründen auch immer mit anderen konstanten verwendet...
-
mathe hasser schrieb:
Mir ist gerade aufgefallen, dass die Referenzimplementierung von der IETF (http://www.ietf.org/rfc/rfc1321.txt) andere werte aus gibt, als md5sum (md5sum (GNU coreutils) 8.5).
Kannst du ein konkretes Beispiel angeben? GNU md5sum gibt bei mir exakt dieselben Werte aus, die auch in der RFC stehen.
-
Hatte ich vergessen anzugeben, Sorry:
$ ./mddriver -x
MD5 test suite:
MD5 ("") = e4c23762ed2823a27e62a64b95c024e7
MD5 ("a") = 793a9bc07e209b286fa416d6ee29a85d
MD5 ("abc") = 7999dc75e8da648c6727e137c5b77803
MD5 ("message digest") = 840793371ec58a6cc84896a5153095de
MD5 ("abcdefghijklmnopqrstuvwxyz") = 98ef94f1f01ac7b91918c6747fdebd96
MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = dabcd637cde443764c4f8aa099cf23be
MD5 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = e29c01a1e2a663c26b4a68bf7ec42df7md5sum
$ md5sum d41d8cd98f00b204e9800998ecf8427e - $ echo a|md5sum 60b725f10c9c85c70d97880dfe8191b3 - $ echo abc|md5sum 0bee89b07a248e27c83fc3d5951213c1 - $ echo message digest|md5sum 100a88bb16f13ae8231e7b74257db820 - $ echo abcdefghijklmnopqrstuvwxyz|md5sum e302f9ecd2d189fa80aac1c3392e9b9c - $ echo ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789|md5sum 598a75469d85b0025d099e96f839b4f2 -
-
The MD5 test suite (driver option "-x") should print the following
results:MD5 test suite:
MD5 ("") = d41d8cd98f00b204e9800998ecf8427e
MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661
MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0
MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b
MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") =
d174ab98d277d9f5a5611c2c9f419d9f
MD5 ("123456789012345678901234567890123456789012345678901234567890123456
78901234567890") = 57edf4a22be3c955ac49da2e2107b67a...sagt die RFC.
-
mathe hasser schrieb:
md5sum
$ md5sum d41d8cd98f00b204e9800998ecf8427e - $ echo a|md5sum 60b725f10c9c85c70d97880dfe8191b3 - $ echo abc|md5sum 0bee89b07a248e27c83fc3d5951213c1 - $ echo message digest|md5sum 100a88bb16f13ae8231e7b74257db820 - $ echo abcdefghijklmnopqrstuvwxyz|md5sum e302f9ecd2d189fa80aac1c3392e9b9c - $ echo ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789|md5sum 598a75469d85b0025d099e96f839b4f2 -
echo
gibt ein abschließendes Newline aus, das von md5sum mitverarbeitet wird. Nimm echo -n.
-
As there is not yet an answer to this problem I encountered too (and did not find any other hint on google) I'd like to answer this question after several years:
Compiling the rfc1321 code as 64 bit code returns the wrong md5 digest shown by the OP (md5 of empty string is e4c23762ed2823a27e62a64b95c024e7). Compiling as 32 bit application returns the correct md5s (md5 of empty string is d41d8cd98f00b204e9800998ecf8427e)
To fix the result change the typedef of UINT4 in global.h from "unsigned long" = 64bit to "uint32_t" from <stdint.h> - then you get the correct md5 digests.