md5整理

本文摘取自Linux 2.6.36内核的MD5实现,针对MD5算法进行了简化和解释,旨在帮助初学者理解并使用该算法,涉及加密和数字验证的应用。
摘要由CSDN通过智能技术生成

MD5 是一个非常常用的算法,用于数字验证等很多方面,但是很多人只是想用这个算法,并不要求很了解其中的算法.其中也包括我在内,不过其实我也有适当的了解的.这里我就从Linux 2.6.36 中摘取出MD5部分并适当的修改了下,希望能对新手们有帮助,下面贴出代码:

MD5.h

#ifndef __HH_MD5_H_HH__
#define __HH_MD5_H_HH__

#include <string.h>

#define MD5_DIGEST_SIZE		16
#define MD5_HMAC_BLOCK_SIZE		64
#define MD5_BLOCK_WORDS		16
#define MD5_HASH_WORDS		4

typedef unsigned char		u8;
typedef unsigned short		u16;
typedef unsigned int		u32;
typedef unsigned long int	u64;

typedef struct md5_state {
	u32 hash[MD5_HASH_WORDS];
	u32 block[MD5_BLOCK_WORDS];
	u64 byte_count;
}MD5_STATE;

/*
	名称:	md5_init
	功能:	初始化MD5
	参数:	
			输入:
				1:struct md5_state *desc;	MD5结构体
	返回值:
			return 0;
*/
int 
md5_init(struct md5_state *desc);

/*
	名称:	md5_update
	功能:	初始化MD5
	参数:	
			输入:
				1:struct md5_state *desc	MD5结构体
				2:const u8 *data		数据指针
				3:unsigned int len		数据长度
	返回值:
			return 0;
*/
int 
md5_update(struct md5_state *desc, const u8 *data, unsigned int len);

/*
	名称:	md5_final
	功能:	获取结果
	参数:	
			输入:
				1:struct md5_state *desc	MD5结构体
			输出:
				2:u8 *out			结果.长度为16	eg.u8 out[16];
	返回值:
			return 0;
*/
int 
md5_final(struct md5_state *desc, u8 *out);

/*
	名称:	md5_cale
	功能:	计算data指向的数据的MD5值,直接返回在out数组内
	参数:	
			输入:
				1:const u8 *data			数据指针
				2:unsigned int len			数据长度
			输出:
				3:u8 *out				结果.长度为16	eg.u8 out[16];
	返回值:
			return 0;
*/
int 
md5_cale(const u8 *data, unsigned int len,u8 *out);

#endif

 
md5.c
/*
	文件		md5.c
	日期:		2012-04-11 20:09
	作者:		LvApp
	功能:		MD5加密
	用法:		
				1:实例变量 	struct md5_state state;
				2:初始化	md5_init(&state);
				3:MS5计算	md5_update(&state,(u8*)"",strlen(""));
				4:结果		md5_final(&state,res);
	维护:		
				2012-04-11 20:09	
						1:从Linux内核中
### 回答1: Python笔记.md 是一个用于记录Python编程相关内容的markdown文档。 在Python学习过程中,学习者通常会遇到各种问题和疑惑,需要有一个地方来记录学习笔记和重要概念,以方便日后复习和查阅。Python笔记.md 就是一个很好的选择。 Python笔记.md 可以按照自己的需要来组织内容,比如可以分为不同的章节或主题,并使用markdown语法来格式化文档,使其更加清晰易读。 在Python笔记.md中,可以记录Python的基础语法、常用数据结构、函数、类、模块等内容。此外,还可以记录一些常见的错误和解决方法,以便日后遇到类似问题时能够快速找到解决方案。 Python笔记.md 还可以用来记录自己的思考和理解。在学习过程中,我们常常会思考某个概念或代码背后的原理,这时候可以将自己的思考记录在笔记中,以便后续复习和回顾。 使用Python笔记.md 还可以方便与他人分享学习心得。可以在文档中加入注释或标题,使得文档更加易读和友好。同时,也可以将Python笔记.md 推送到版本控制系统中,与他人共享和共同编辑。 总之,Python笔记.md 是一个非常有用的工具,可以帮助学习者系统地记录、整理和复习Python编程相关的知识和经验。无论是初学者还是有经验的开发者,都可以从中受益,并提高自己的编程技能。 ### 回答2: Python笔记.md是一个使用Markdown语法编写的Python笔记文档。Markdown语法是一种轻量级的标记语言,可以快速地编辑和排版文档。 在Python笔记.md中,可以记录Python程序设计的相关知识、概念和技巧。通过使用Markdown语法,可以方便地插入代码块、链接、图片以及其他强调和排版格式,使得笔记更加直观和易读。 Python笔记.md可以按照不同的章节和主题组织内容,方便快速查找和阅读。在每个章节中,可以记录不同的Python编程概念,如数据类型、控制结构、函数、类等。可以通过示例代码和解释说明来详细解释这些概念的用法和特点。 在笔记中,还可以记录一些Python的常见问题和解决方案,例如常见错误、调试技巧等。这些内容可以帮助初学者更好地理解和掌握Python语言。 此外,Python笔记.md还可以连接到其他的Python资源,如官方文档、教程、在线代码编辑器等。这样可以提供更多的学习和参考资料。 总之,Python笔记.md是一个有条理、易读和方便编辑的Python学习笔记文档,可以帮助人们更好地学习和理解Python编程语言。 ### 回答3: Python笔记md是一种用来记录Python编程语言相关内容的文本文件格式。它使用Markdown语法来快速、简洁地编写和格式化笔记。 Python笔记md的优点是: 1. 简单易懂:Markdown语法简洁明了,使用起来非常简单,即便没有编程背景的人也能快速上手。 2. 跨平台兼容:无论是在Windows、Mac还是Linux系统中,Python笔记md都可以轻松使用。 3. 可读性强:Python笔记md的文本格式使得代码和说明可以同时显示,方便读者理解和学习。 4. 方便分享和发布:Python笔记md可以导为HTML或PDF格式,方便分享给其他人或者发布到网络上。 5. 与开发工具兼容:大多数集成开发环境(IDE)和文本编辑器都支持Markdown语法,可以实时预览和编辑笔记。 使用Python笔记md可以帮助程序员记录代码和相关的解释和说明,方便复习和查看。它还可以用于编写技术博客、文档和教育材料等。而且由于其文本格式的特点,Python笔记md也非常适合使用版本控制系统进行版本管理。 总而言之,Python笔记md是一种简单、灵活且易于分享的笔记格式,可以有效提高编程学习和开发的效率。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值