C语言生成SHA1校验码

C语言生成SHA1校验码,记下备用。

/*sha1.h*/
#ifndef _SHA1_H
#define _SHA1_H
#define uint8 unsigned char
#define uint32 unsigned long int
struct sha1_context
{
	uint32 total[2];
	uint32 state[5];
	uint8 buffer[64];
};
void sha1_starts( struct sha1_context *ctx );
void sha1_update( struct sha1_context *ctx, uint8 *input, uint32 length );
void sha1_finish( struct sha1_context *ctx, uint8 digest[20] );
#endif /* sha1.h */

/*sha1.c*/
/*
* FIPS 180-1 compliant SHA-1 implementation
*/
#include <string.h>
#include "sha1.h"
#define GET_UINT32(n,b,i) 						\
{ 												\
	(n) = (uint32) ((uint8 *) b)[(i)+3]			\
	| (((uint32) ((uint8 *) b)[(i)+2]) << 8) 	\
	| (((uint32) ((uint8 *) b)[(i)+1]) << 16) 	\
	| (((uint32) ((uint8 *) b)[(i)] ) << 24); 	\
}
#define PUT_UINT32(n,b,i)									\
{ 															\
	(((uint8 *) b)[(i)+3]) = (uint8) (((n) ) & 0xFF); 		\
	(((uint8 *) b)[(i)+2]) = (uint8) (((n) >> 8) & 0xFF); 	\
	(((uint8 *) b)[(i)+1]) = (uint8) (((n) >> 16) & 0xFF); 	\
	(((uint8 *) b)[(i)] ) = (uint8) (((n) >> 24) & 0xFF); 	\
}

void sha1_starts( struct sha1_context *ctx )
{
	ctx->total[0] = 0;
	ctx->total[1] = 0;
	ctx->state[0] = 0x67452301;
	ctx->state[1] = 0xEFCDAB89;
	c
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值