用 openssl 库进行 hmac_sha256 hmac_sha1 hmac_md5 加密

【仅供参考】下载一个合适的 openssl 版本,其中 .lib.dll.h文件最好完全匹配
本人项目中使用,没问题!如果有问题,请自行解决!
openssl库里面,是不是也用到了 cryptolib 库的代码???

#include "openssl\hmac.h"

#pragma comment(lib,"libs\\libcrypto.lib")


/************************************************************************/
/*说明:32字节
/************************************************************************/
string XuHmac::Hmac_Sha256(byte* pKey, size_t nLenKey, byte* pData, size_t nLenData)
{
	string stdDigest = "";

	HMAC_CTX* pHmac_ctx = HMAC_CTX_new();
	HMAC_Init_ex(pHmac_ctx, pKey, nLenKey, EVP_sha256(), NULL);
	HMAC_Update(pHmac_ctx, pData, nLenData);

	unsigned char szDigest[EVP_MAX_MD_SIZE];
	unsigned int nLenDigest = 0;
	HMAC_Final(pHmac_ctx, szDigest, &nLenDigest);
	for (unsigned int i = 0; i < nLenDigest; ++i)
		stdDigest += (char)(szDigest[i]);

	HMAC_CTX_free(pHmac_ctx);

	return stdDigest;
}


/************************************************************************/
/*说明:20字节
/************************************************************************/
string XuHmac::Hmac_Sha1(byte* pKey, size_t nLenKey, byte* pData, size_t nLenData)
{
	string stdDigest = "";

	HMAC_CTX* pHmac_ctx = HMAC_CTX_new();
	HMAC_Init_ex(pHmac_ctx, pKey, nLenKey, EVP_sha1(), NULL);
	HMAC_Update(pHmac_ctx, pData, nLenData);

	unsigned char szDigest[EVP_MAX_MD_SIZE];
	unsigned int nLenDigest = 0;
	HMAC_Final(pHmac_ctx, szDigest, &nLenDigest);
	for (unsigned int i = 0; i < nLenDigest; ++i)
		stdDigest += (char)(szDigest[i]);

	HMAC_CTX_free(pHmac_ctx);

	return stdDigest;
}


/************************************************************************/
/*说明:16字节
/************************************************************************/
string XuHmac::Hmac_MD5(byte* pKey, size_t nLenKey, byte* pData, size_t nLenData)
{
	string stdDigest = "";

	HMAC_CTX* pHmac_ctx = HMAC_CTX_new();
	HMAC_Init_ex(pHmac_ctx, pKey, nLenKey, EVP_md5(), NULL);
	HMAC_Update(pHmac_ctx, pData, nLenData);

	unsigned char szDigest[EVP_MAX_MD_SIZE];
	unsigned int nLenDigest = 0;
	HMAC_Final(pHmac_ctx, szDigest, &nLenDigest);
	for (unsigned int i = 0; i < nLenDigest; ++i)
		stdDigest += (char)(szDigest[i]);

	HMAC_CTX_free(pHmac_ctx);

	return stdDigest;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值