资源简介
全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要
代码片段和文件信息
/* sha1.c */
/* 以下所用各种参量名称皆为sha-1在出版物上所用之公用名称 */
#include “sha1.h“
/*
* 以下是为 SHA1 向左环形移位宏 之定义
*/
#define SHA1CircularShift(bitsword) \
(((word) << (bits)) | ((word) >> (32-(bits))))
/* 局部函数原型 */
void SHA1PadMessage(SHA1Context *); /* 定义填充信息指针 */
void SHA1ProcessMessageBlock(SHA1Context *);
/*
* SHA1Reset
*
* 以下为数据初始化之操作
* Parameters:(参数设置)
* context: [in/out]
* The context to reset.
*
*/
int SHA1Reset(SHA1Context *context)
{
if (!context)
{
return shaNull;
}
context->Length_Low = 0;
context->Length_High = 0;
context->Message_Block_Index = 0;
context->Intermediate_Hash[0] = 0x67452301;
context->Intermediate_Hash[1] = 0xEFCDAB89;
context->Intermediate_Hash[2] = 0x98BADCFE;
context->Intermediate_Hash[3] = 0x10325476;
context->Intermediate_Hash[4] = 0xC3D2E1F0;
context->Computed = 0;
context->Corrupted = 0;
return shaSuccess;
}
/*
* SHA1Result
*
* 以下为sha-1结果描述:
*:
* 该算法将会返回一个160比特的消息摘要队列
*
* 或者输出计算错误
*
*/
int SHA1Result( SHA1Context *context
uint8_t Message_Digest[SHA1HashSize])
{
int i;
if (!context || !Message_Digest)
{
return shaNull;
}
if (context->Corrupted)
{
return context->Corrupted;
}
if (!context->Computed)
{
SHA1PadMessage(context);
for(i=0; i<64; ++i)
{
/* 消息清零 */
context->Message_Block[i] = 0;
}
context->Length_Low = 0; /* 长度清零 */
context->Length_High = 0;
context->Computed = 1;
}
for(i = 0; i < SHA1HashSize; ++i)
{
Message_Digest[i] = context->Intermediate_Hash[i>>2]
>> 8 * ( 3 - ( i & 0x03 ) );
}
return shaSuccess;
}
/*
* 以下为sha-1输入描述:
*
* 接收单位长度为8字节倍数的消息
*
*/
int SHA1Input( SHA1Context *context
const uint8_t *message_array
unsigned length)
{
if (!length)
{
return shaSuccess;
}
if (!context || !message_array)
{
return shaNull;
}
if (context->Computed)
{
context->Corrupted = shaStateError;
return shaStateError;
}
if (context->Corrupted)
{
return context->Corrupted;
}
while(length-- && !context->Corrupted)
{
context->Message_Block[context->Message_Block_Index++] =
(*message_array & 0xFF);
context->Length_Low += 8;
if (context->Length_Low == 0)
{
context->Length_High++;
if (context->Length_High == 0)
{
/* Message is too long */
context->Corrupted = 1;
}
}
if (context->Message_Block_Index == 64)
{
SHA1ProcessMessageBlock(context);
}
message_array+
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7178 2009-04-25 17:27 sha1\sha1.c
文件 1277 2009-05-12 10:24 sha1\sha1.h
文件 3246 2009-05-12 10:28 sha1\sha1test.c
文件 7036 2009-05-12 10:27 sha1\stdint.h
目录 0 2010-04-10 12:24 sha1
----------- --------- ---------- ----- ----
18737 5
- 上一篇:VC++MFC串口调试助手完整编辑过程介绍
- 下一篇:人工势场法路径规划c语言程序
相关资源
- 常用加密算法AES、RSA、DES、MD5、TEA、
- C语言 3DES、AES、RC6、TEA、RSA、MD5、S
- MD5-SHA1-SHA256算法C源码
- c++之sha1类
- PBKDF2_HMac_SHA1哈希算法
- SHA1算法C实现源码
- sha1实现源码
- SHA1算法C语言源代码
- HMAC SHA1加密 C语言源码
- HMAC-SHA256和HMAC-SHA1加密C语言代码(V
- C++文件sha1
- HMAC-SHA1 C++实现
- 阿里云 hamcsha1算法
- HMAC-SHA256和HMAC-SHA1加密C语言代码
- C++ HMAC SHA1
- SHA1加密算法源代码
- c语言 SHA1 DES MD4 MD5
- mfc窗口分割和树形控件的结合使用
- sha1加密算法C++实现
- 编程实现SHA1/MD5杂凑密码算法,sha1程
- MD5 SHA1 SHA256 的C语言源码
评论
共有 条评论