shaex.cpp
来自「SHA家族加密算法实现方式, C语言版本」· C++ 代码 · 共 120 行
CPP
120 行
/********************************************************************
Copyright 2006-2008 ZHANG Luduo. All Rights Reserved.
Permission to use, copy, modify, distribute and sell this software
and its documentation for any purpose is hereby granted without fee,
provided that the above copyright notice appear in all copies and
that both that copyright notice and this permission notice appear
in supporting documentation.
********************************************************************/
/*
代码说明 :
SHA算法, 160, 224, 256, 384, 512位
联系方式:
作者 - 张鲁夺
MSN - zhangluduo@msn.com
Email - zhangluduo@163.com
QQ群 - 34064264, 56918155
为所有爱我的人和我爱的人努力!
*/
#include "StdAfx.h"
#include "SHAEx.h"
SHAEx::SHAEx()
{
}
SHAEx::SHAEx(SHAEx::SHA_BITS ShaBits)
{
m_ShaBits = ShaBits;
}
SHAEx::~SHAEx()
{
}
void SHAEx::Init()
{
switch(m_ShaBits)
{
case BITS160:
m_SHA1.SHA1Reset(&m_Context1);
break;
case BITS224:
sha2_starts(&m_Context2, 1);
break;
case BITS256:
sha2_starts(&m_Context2, 0);
break;
case BITS384:
sha4_starts(&m_Context4, 1);
break;
case BITS512:
sha4_starts(&m_Context4, 0);
break;
}
}
void SHAEx::Init(SHA_BITS ShaBits)
{
m_ShaBits = ShaBits;
Init();
}
void SHAEx::Update(unsigned char pData[], int Len)
{
switch(m_ShaBits)
{
case BITS160:
m_SHA1.SHA1Input(&m_Context1, pData, Len);
break;
case BITS224:
sha2_update(&m_Context2, pData, Len);
break;
case BITS256:
sha2_update(&m_Context2, pData, Len);
break;
case BITS384:
sha4_update(&m_Context4, pData, Len);
break;
case BITS512:
sha4_update(&m_Context4, pData, Len);
break;
}
}
void SHAEx::Finish(unsigned char result[])
{
switch(m_ShaBits)
{
case BITS160:
m_SHA1.SHA1Result(&m_Context1, result);
break;
case BITS224:
sha2_finish(&m_Context2, result);
break;
case BITS256:
sha2_finish(&m_Context2, result);
break;
case BITS384:
sha4_finish(&m_Context4, result);
break;
case BITS512:
sha4_finish(&m_Context4, result);
break;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?