資源簡介
codeproject上的共享工程,源地址:https://www.codeproject.com/Articles/2463/CSHA-A-C-Class-Implementation-of-the-SHA-Hash-A,壓縮包里包含SHA1.h和SHA1.cpp文件,不能設置免費所以設置了最低分,歡迎交流暗號271888395。

代碼片段和文件信息
/*
??100%?free?public?domain?implementation?of?the?SHA-1?algorithm
??by?Dominik?Reichl?
??Web:?http://www.dominik-reichl.de/
??See?header?file?for?version?history?and?test?vectors.
*/
//?If?compiling?with?MFC?you?might?want?to?add?#include?“StdAfx.h“
#define?_CRT_SECURE_NO_WARNINGS
#include?“SHA1.h“
#define?SHA1_MAX_FILE_BUFFER?(32?*?20?*?820)
//?Rotate?p_val32?by?p_nBits?bits?to?the?left
#ifndef?ROL32
#ifdef?_MSC_VER
#define?ROL32(p_val32p_nBits)?_rotl(p_val32p_nBits)
#else
#define?ROL32(p_val32p_nBits)?(((p_val32)<<(p_nBits))|((p_val32)>>(32-(p_nBits))))
#endif
#endif
#ifdef?SHA1_LITTLE_ENDIAN
#define?SHABLK0(i)?(m_block->l[i]?=?\
(ROL32(m_block->l[i]24)?&?0xFF00FF00)?|?(ROL32(m_block->l[i]8)?&?0x00FF00FF))
#else
#define?SHABLK0(i)?(m_block->l[i])
#endif
#define?SHABLK(i)?(m_block->l[i&15]?=?ROL32(m_block->l[(i+13)&15]?^?\
m_block->l[(i+8)&15]?^?m_block->l[(i+2)&15]?^?m_block->l[i&15]1))
//?SHA-1?rounds
#define?S_R0(vwxyzi)?{z+=((w&(x^y))^y)+SHABLK0(i)+0x5A827999+ROL32(v5);w=ROL32(w30);}
#define?S_R1(vwxyzi)?{z+=((w&(x^y))^y)+SHABLK(i)+0x5A827999+ROL32(v5);w=ROL32(w30);}
#define?S_R2(vwxyzi)?{z+=(w^x^y)+SHABLK(i)+0x6ED9EBA1+ROL32(v5);w=ROL32(w30);}
#define?S_R3(vwxyzi)?{z+=(((w|x)&y)|(w&x))+SHABLK(i)+0x8F1BBCDC+ROL32(v5);w=ROL32(w30);}
#define?S_R4(vwxyzi)?{z+=(w^x^y)+SHABLK(i)+0xCA62C1D6+ROL32(v5);w=ROL32(w30);}
#pragma?warning(push)
//?Disable?compiler?warning?‘Conditional?expression?is?constant‘
#pragma?warning(disable:?4127)
CSHA1::CSHA1()
{
m_block?=?(SHA1_WORKSPACE_BLOCK*)m_workspace;
Reset();
}
#ifdef?SHA1_WIPE_VARIABLES
CSHA1::~CSHA1()
{
Reset();
}
#endif
void?CSHA1::Reset()
{
//?SHA1?initialization?constants
m_state[0]?=?0x67452301;
m_state[1]?=?0xEFCDAB89;
m_state[2]?=?0x98BADCFE;
m_state[3]?=?0x10325476;
m_state[4]?=?0xC3D2E1F0;
m_count[0]?=?0;
m_count[1]?=?0;
}
void?CSHA1::Transform(UINT_32*?pState?const?UINT_8*?pBuffer)
{
UINT_32?a?=?pState[0]?b?=?pState[1]?c?=?pState[2]?d?=?pState[3]?e?=?pState[4];
memcpy(m_block?pBuffer?64);
//?4?rounds?of?20?operations?each?loop?unrolled
S_R0(abcde?0);?S_R0(eabcd?1);?S_R0(deabc?2);?S_R0(cdeab?3);
S_R0(bcdea?4);?S_R0(abcde?5);?S_R0(eabcd?6);?S_R0(deabc?7);
S_R0(cdeab?8);?S_R0(bcdea?9);?S_R0(abcde10);?S_R0(eabcd11);
S_R0(deabc12);?S_R0(cdeab13);?S_R0(bcdea14);?S_R0(abcde15);
S_R1(eabcd16);?S_R1(deabc17);?S_R1(cdeab18);?S_R1(bcdea19);
S_R2(abcde20);?S_R2(eabcd21);?S_R2(deabc22);?S_R2(cdeab23);
S_R2(bcdea24);?S_R2(abcde25);?S_R2(eabcd26);?S_R2(deabc27);
S_R2(cdeab28);?S_R2(bcdea29);?S_R2(abcde30);?S_R2(eabcd31);
S_R2(deabc32);?S_R2(cdeab33);?S_R2(bcdea34);?S_R2(abcde35);
S_R2(eabcd36);?S_R2(deabc37);?S_R2(c
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????7259??2012-06-20?01:21??SHA1.cpp
?????文件????????8436??2012-06-20?01:25??SHA1.h
?????文件????????4042??2018-01-19?13:54??CSHA1ClassDesc
- 上一篇:通過串口控制步進電機
- 下一篇:基于Simbad平臺的機器人避障模擬與實現
評論
共有 條評論