簡體   English   中英

MD5 源代碼未輸出正確值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM