lbx199109
面向对象-c
2020-03-09 12:09

C++ 使用Openssl进行HMAC- sha256加密

  • c++

bool calc_HMAC_SHA256(const std::string &key, const std::string &input, std::string *hmac)
{
unsigned char md[32] = { 0 };//32 bytes

char format_md[65] = { 0 };
unsigned int md_len = sizeof(md);
HMAC_CTX ctx;
HMAC_CTX_init(&ctx);
if (!HMAC_Init_ex(&ctx, key.data(), (int)key.length(), EVP_sha256(), NULL) ||
!HMAC_Update(&ctx, (const unsigned char *)input.data(), input.length()) ||
!HMAC_Final(&ctx, md, &md_len)) {
HMAC_CTX_cleanup(&ctx);
return false;
}
HMAC_CTX_cleanup(&ctx);
for (int i = 0; i < 32; i++) {
snprintf(&format_md[i * 2], 3, "%02x", md[i]); //二进制转为十六进制大写

}
hmac->assign(format_md);
// 转大写

transform(hmac->begin(), hmac->end(), hmac->begin(), ::toupper);
return true;
}
openssl已经导入,lib也引用了,运行时
CloudPayInfo.obj : error LNK2001: 无法解析的外部符号 _EVP_sha256
1>CloudPayInfo.obj : error LNK2001: 无法解析的外部符号 _HMAC_CTX_init
1>CloudPayInfo.obj : error LNK2001: 无法解析的外部符号 _HMAC_CTX_cleanup
1>CloudPayInfo.obj : error LNK2001: 无法解析的外部符号 _HMAC_Init_ex
1>CloudPayInfo.obj : error LNK2001: 无法解析的外部符号 _HMAC_Update
1>CloudPayInfo.obj : error LNK2001: 无法解析的外部符号 _HMAC_Final
请问大佬们怎么解决啊?

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

1条回答

为你推荐

换一换