39 #define TEST_BLOCK_LEN 1000
40 #define TEST_BLOCK_COUNT 1000
50 #define MD5_CTX MD2_CTX
51 #define MDInit MD2Init
52 #define MDUpdate MD2Update
53 #define MDFinal MD2Final
56 #define MD5_CTX MD4_CTX
57 #define MDInit MD4Init
58 #define MDUpdate MD4Update
59 #define MDFinal MD4Final
62 #define MD5_CTX MD5_CTX
63 #define MDInit MD5Init
64 #define MDUpdate MD5Update
65 #define MDFinal MD5Final
85 for (i = 1; i < argc; i++)
86 if (argv[i][0] ==
'-' && argv[i][1] ==
's')
88 else if (strcmp (argv[i],
"-t") == 0)
90 else if (strcmp (argv[i],
"-x") == 0)
106 unsigned char digest[16];
107 unsigned int len = strlen (
string);
113 printf (
"MD%d (\"%s\") = ",
MD,
string);
124 time_t endTime, startTime;
130 (
"MD%d time trial. Digesting %d %d-byte blocks ...",
MD,
135 block[i] = (
unsigned char)(i & 0xff);
143 MDUpdate (&context, block, TEST_BLOCK_LEN);
152 printf (
"\nTime = %ld seconds\n", (
long)(endTime-startTime));
154 (
"Speed = %ld bytes/second\n",
155 (
long)TEST_BLOCK_LEN * (
long)TEST_BLOCK_COUNT/(endTime-startTime));
168 MDString (
"abcdefghijklmnopqrstuvwxyz");
170 (
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
172 (
"1234567890123456789012345678901234567890\
173 1234567890123456789012345678901234567890");
184 unsigned char buffer[1024], digest[16];
186 if ((file = fopen (filename,
"rb")) == NULL)
187 printf (
"%s can't be opened\n", filename);
191 while (len = fread (buffer, 1, 1024, file))
197 printf (
"MD%d (%s) = ",
MD, filename);
209 unsigned char buffer[16], digest[16];
212 while (len = fread (buffer, 1, 16, stdin))
223 unsigned
char digest[16];
228 for (i = 0; i < 16; i++)
229 printf (
"%02x", digest[i]);