µÚÒ»·¶ÎÄÍø - רҵÎÄÕ·¶ÀýÎĵµ×ÊÁÏ·ÖÏíÆ½Ì¨

MD5 ±¨ÎÄÕªÒªËã·¨Ô´Âë

À´Ô´£ºÓû§·ÖÏí ʱ¼ä£º2025/11/25 15:54:26 ±¾ÎÄÓÉloading ·ÖÏí ÏÂÔØÕâÆªÎĵµÊÖ»ú°æ
˵Ã÷£ºÎÄÕÂÄÚÈݽö¹©Ô¤ÀÀ£¬²¿·ÖÄÚÈÝ¿ÉÄܲ»È«£¬ÐèÒªÍêÕûÎĵµ»òÕßÐèÒª¸´ÖÆÄÚÈÝ£¬ÇëÏÂÔØwordºóʹÓá£ÏÂÔØwordÓÐÎÊÌâÇëÌí¼Ó΢ÐźÅ:xxxxxxx»òQQ£ºxxxxxx ´¦Àí£¨¾¡¿ÉÄܸøÄúÌṩÍêÕûÎĵµ£©£¬¸ÐлÄúµÄÖ§³ÖÓëÁ½⡣

unsigned int len; {

unsigned int i;

for (i = 0; i < len; i++)

((char *)output)[i] = (char)value; }

A.4 mddriver.c

/* MDDRIVER.C - MD2, MD4 and MD5²âÊÔ³ÌÐò */

/* RSAÊý¾Ý°²È«¹«Ë¾£¨RSA Data Security, Inc.£©´ÓÀ´Ã»ÓгöÓÚÈκÎÌØ¶¨Ä¿µÄ³ÂÊö¹ý¹ØÓÚ´ËÈí¼þµÄ¿ÉÂòÐÔºÍʵÓÃÐÔ£¬ËüÌṩÁË¡°as is¡±,ûÓбí´ï»ò°µÊ¾¹ýÈκÎÀíÓÉ¡£´ËÉùÃ÷±ØÐëÔÚÈκδËÎļþºÍÈí¼þµÄÈκο½±´Öб£Áô¡£*/ /* Èç¹ûûÓж¨ÒåC±àÒë±êÖ¾µÄÖµ£¬ÔòMD5ȱʡ״̬ÏÂΪMD5 */ #ifndef MD

#define MD MD5 #endif

#include #include #include #include \#if MD == 2

#include \#endif

#if MD == 4

#include \#endif

#if MD == 5

#include \#endif

/* ²âÊÔ·Ö×鳤¶ÈºÍÊýÁ¿ */ #define TEST_BLOCK_LEN 1000 #define TEST_BLOCK_COUNT 1000

static void MDString PROTO_LIST ((char *)); static void MDTimeTrial PROTO_LIST ((void)); static void MDTestSuite PROTO_LIST ((void)); static void MDFile PROTO_LIST ((char *)); static void MDFilter PROTO_LIST ((void));

static void MDPrint PROTO_LIST ((unsigned char [16]));

#if MD == 2

#define MD_CTX MD2_CTX #define MDInit MD2Init #define MDUpdate MD2Update #define MDFinal MD2Final #endif

#if MD == 4

#define MD_CTX MD4_CTX #define MDInit MD4Init #define MDUpdate MD4Update #define MDFinal MD4Final #endif

#if MD == 5

#define MD_CTX MD5_CTX #define MDInit MD5Init #define MDUpdate MD5Update #define MDFinal MD5Final #endif

/* Ö÷³ÌÐò. ±äÁ¿:

-sstring ¨C ÕªÒª×Ö·û´® -t - ÔËÐÐʱ¼ä²âÊÔ -x - ÔËÐвâÊԽű¾ filename ¨C ÕªÒªÎļþ (none) - ÕªÒª±ê×¼ÊäÈë */

int main (argc, argv) int argc;

char *argv[]; {

int i;

if (argc > 1)

for (i = 1; i < argc; i++)

if (argv[i][0] == '-' && argv[i][1] == 's') MDString (argv[i] + 2);

else if (strcmp (argv[i], \ MDTimeTrial ();

else if (strcmp (argv[i], \ MDTestSuite (); else

MDFile (argv[i]);

else

MDFilter ();

return (0); }

/* ¼ÆËã×Ö·û´®µÄÕªÒª²¢´òÓ¡ÆäÖµ */ static void MDString (string) char *string; {

MD_CTX context;

unsigned char digest[16];

unsigned int len = strlen (string);

MDInit (&context);

MDUpdate (&context, string, len); MDFinal (digest, &context);

printf (\ MDPrint (digest); printf (\}

/* ²âÊÔ¼ÆËã TEST_BLOCK_COUNT TEST_BLOCK_LEN-byte ·Ö×éÕªÒªµÄʱ¼ä */

static void MDTimeTrial () {

MD_CTX context;

time_t endTime, startTime;

unsigned char block[TEST_BLOCK_LEN], digest[16]; unsigned int i;

printf

(\ TEST_BLOCK_LEN, TEST_BLOCK_COUNT);

/* ³õʼ»¯·Ö×é*/

for (i = 0; i < TEST_BLOCK_LEN; i++) block[i] = (unsigned char)(i & 0xff);

/* ¿ªÊ¼Ê±ÖÓ */ time (&startTime);

/* ÕªÒª·Ö×é */

MDInit (&context);

for (i = 0; i < TEST_BLOCK_COUNT; i++) MDUpdate (&context, block, TEST_BLOCK_LEN); MDFinal (digest, &context);

/* ֹͣʱÖÓ */ time (&endTime);

printf (\ printf (\ MDPrint (digest);

printf (\ printf

(\

(long)TEST_BLOCK_LEN * (long)TEST_BLOCK_COUNT/(endTime-startTime)); }

/* ¼ÆËãÒ»¸ö²Î¿¼×é¼þ´®µÄÕªÒª²¢´òÓ¡½á¹û*/ static void MDTestSuite () {

printf (\

MDString (\ MDString (\ MDString (\

MDString (\

MDString (\ MDString

(\ MDString

(\1234567890123456789012345678901234567890\}

/*¼ÆËãÒ»¸öÎļþµÄÕªÒª²¢´òÓ¡½á¹û */ static void MDFile (filename) char *filename; {

FILE *file; MD_CTX context; int len;

unsigned char buffer[1024], digest[16];

if ((file = fopen (filename, \

ËÑË÷¸ü¶à¹ØÓÚ£º MD5 ±¨ÎÄÕªÒªËã·¨Ô´Âë µÄÎĵµ
MD5 ±¨ÎÄÕªÒªËã·¨Ô´Âë.doc ½«±¾ÎĵÄWordÎĵµÏÂÔØµ½µçÄÔ£¬·½±ã¸´ÖÆ¡¢±à¼­¡¢ÊղغʹòÓ¡
±¾ÎÄÁ´½Ó£ºhttps://www.diyifanwen.net/c10y1048lj46i8ss1cmts_4.html£¨×ªÔØÇë×¢Ã÷ÎÄÕÂÀ´Ô´£©
ÈÈÃÅÍÆ¼ö
Copyright © 2012-2023 µÚÒ»·¶ÎÄÍø °æÈ¨ËùÓÐ ÃâÔðÉùÃ÷ | ÁªÏµÎÒÃÇ
ÉùÃ÷ :±¾ÍøÕ¾×ðÖØ²¢±£»¤ÖªÊ¶²úȨ£¬¸ù¾Ý¡¶ÐÅÏ¢ÍøÂç´«²¥È¨±£»¤ÌõÀý¡·£¬Èç¹ûÎÒÃÇ×ªÔØµÄ×÷Æ·ÇÖ·¸ÁËÄúµÄȨÀû,ÇëÔÚÒ»¸öÔÂÄÚ֪ͨÎÒÃÇ£¬ÎÒÃǻἰʱɾ³ý¡£
¿Í·þQQ£ºxxxxxx ÓÊÏ䣺xxxxxx@qq.com
ÓåICP±¸2023013149ºÅ
Top