博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简化版的SHA1算法C语言版
阅读量:5962 次
发布时间:2019-06-19

本文共 1034 字,大约阅读时间需要 3 分钟。

hot3.png

最近用到了一些常规散列算法,学习一下SHA算法,网上SHA1介绍很多,也有实例,但代码风格似乎不符合我的审美。

经过学习验证,编写了一个简化版的SHA1算法,为什么叫简化版呢?

因为这个算法只能处理56字节以内的数据,大于等于56字节的情况要分组计算。

分组补位有点麻烦,怎么合理分组,还有待思考。

先贴出简化版的代码吧。

/** SHA1散列算法* 
* 参考:http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf*/#include
#include
#include "sha1.h"#define S(x,n) (((x)<
>(32-n)) //SHA定义S函数为循环左移static unsigned long h[5];static unsigned long m[16];static unsigned long w[80];//补位(余数=448)+补长度(64位)=512位Mstatic void sha1_pad(unsigned char *input, int len){ int i; int n; for(i=0;i<16;i++) { m[i] = 0; } for(i=0;i

 

 

测试用例:

 

void main(void){	char str[1024];	unsigned long* mac;	while(1)	{		puts("input:");		gets(str);		mac=sha1(str,strlen(str));		printf("SHA1=%08X%08X%08X%08X%08X\n",mac[0],mac[1],mac[2],mac[3],mac[4]);		system("pause");	}}

 

 

 

 

 

运算结果:

input:

123
SHA1=40BD001563085FC35165329EA1FF5C5ECBDBBEEF
请按任意键继续. . .
input:
123456
SHA1=7C4A8D09CA3762AF61E59520943DC26494F8941B
请按任意键继续. . .

 



转载于:https://my.oschina.net/kerndev/blog/683250

你可能感兴趣的文章
maya pyside 多个窗口实例 报错 解决
查看>>
关于文件上传请求第一次为post,后面为get的问题
查看>>
【Qt笔记】QDialog--模态和非模态
查看>>
nginx 0.8.54/1.0.0 在cygwin环境下的编译(包括 nginx_mod_h264
查看>>
PowerDesigner生成Excel版本的数据库文件
查看>>
Oracle 查找常见耗性能的语句
查看>>
thinkphp 开启页面的Trace信息
查看>>
mysql 链接数满了的错误 ERROR 1040 (HY000): Too many connections
查看>>
android textview字体加下划线
查看>>
springMVC 定时任务
查看>>
Mint8(ubuntu16.04) 搭建微信Web开发工具
查看>>
PostgreSQL数据类型-数据类型简介和布尔类型
查看>>
PostgreSQL数据类型-二进制数据和字符串数据类型与字符串函数
查看>>
shell 基础
查看>>
twisted的LineReceiver的接口定义
查看>>
浅解用PHP实现MVC
查看>>
MySQL常用操作
查看>>
Yxcms网站管理系统安装
查看>>
字符串,链表,树
查看>>
Nginx错误日志(error_log)配置及信息详解
查看>>