digestopensslimpl.cpp

来自「这是一个基于VS2003开发的数据加密和解密的程序」· C++ 代码 · 共 80 行

CPP
80
字号
/*!
	\file DigestOpenSslImpl.cpp
	\author Jackson
	\date 13/1/2005
*/

#include "DigestOpenSslImpl.h"

namespace Lucid {

namespace Encryption {

TDigestOpenSslImpl::TDigestOpenSslImpl(	THashAlgorithm algorithm):TDigestImplBase(algorithm)
{
}

TDigestOpenSslImpl::~TDigestOpenSslImpl()
{
}

void TDigestOpenSslImpl::Digest(
	const char *inputm,
	unsigned char *outputd,
	unsigned int inputm_len,
	unsigned int &outputd_len)
{
	

//	Lucid::System::Thread::TThreadGuard m(mMutex);
    OpenSSL_add_all_digests();
	EVP_MD_CTX_init(&mDigestCtx);
	EVP_DigestInit_ex(&mDigestCtx, GetAlgorithmType(),NULL);
    
	EVP_DigestUpdate(&mDigestCtx, inputm, inputm_len);
	EVP_DigestFinal_ex(&mDigestCtx, outputd , &outputd_len);
	
	EVP_MD_CTX_cleanup(&mDigestCtx);
}



const EVP_MD *TDigestOpenSslImpl::GetAlgorithmType() const
{
	const EVP_MD *type;
	switch (GetAlgorithm()) 
	{
	case NO_DIGEST:
		type = EVP_md_null();
		break;
	case DIGEST_MD2:
		type = EVP_md2();
		break;
	case DIGEST_MD4:
		type = EVP_md4();
		break;
	case DIGEST_MD5:
		type = EVP_md5();
		break;
	case DIGEST_SHA: 		type = EVP_sha();		break;	case DIGEST_SHA1:		type = EVP_sha1();		break;	case DUGEST_DESSl:		type = EVP_dss();		break;	case DIGEST_DSS1:		type = EVP_dss1();		break;	case DIGEST_ECDSA:		type = EVP_ecdsa();
		break;
	}
	return type;
}

}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?