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.



  • @Christoph

    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") = e29c01a1e2a663c26b4a68bf7ec42df7

    md5sum

    $ 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.


Anmelden zum Antworten