![](/img/trans.png)
[英]If I insert a comment on a source code will it`s binarries MD5 be changed?
[英]MD5 source code not outputting correct values
我正在嘗試在我的 linux 機器上運行 md5 源代碼。 我從這里得到了代碼: https : //tools.ietf.org/html/rfc1321 。
在鏈接的底部,它聲稱 MD5 測試套件的輸出應如下所示:
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
在我的 md5 文件夾中,我有以下內容:
global.h
md5c.c
md5.h
mddriver.c
當我首先嘗試編譯時,它在 mddriver.c 中拋出一個錯誤,說“第 20 行 MD5 未定義”(或類似的內容),因此我將第 20 行從“#define MD MD5”更改為“#define MD 5”。 考慮到代碼的其余部分,這有效並且似乎是有意義的。
我在 MD5 文件夾中使用以下內容進行編譯:
gcc -Wall *.c -o out
這創建了我可以使用的文件“out”
./out -x
其中參數“-x”是運行測試套件。 但是,我得到了“./out -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
這顯然不一樣。 我錯過了什么嗎? 如果您希望我重新創建“MD5 未聲明”錯誤,請告訴我。 謝謝。
MD5 是一種舊算法,RFC 中的源代碼可能不是針對 64 位機器編寫的。 因此,代碼很可能在不同的處理器架構上失敗。
為了在 64 位機器上編譯,您需要將 -m32 標志傳遞給 gcc。 在 linux 上,您可能還需要安裝 libc6-dev-i386 包。
global.h有:
/* UINT2 defines a two byte word */
typedef unsigned short int UINT2;
/* UINT4 defines a four byte word */
typedef unsigned long int UINT4;
將global.h更改為:
#include <inttypes.h>
/* UINT2 defines a two byte word */
typedef uint16_t UINT2;
/* UINT4 defines a four byte word */
typedef uint32_t UINT4;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.