云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > MD5 报文摘要算法源码

MD5 报文摘要算法源码

  • 62 次阅读
  • 3 次下载
  • 2025/7/7 11:08:53

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 – 摘要字符串 -t - 运行时间测试 -x - 运行测试脚本 filename – 摘要文件 (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 报文摘要算法源码 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

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 <

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com