【发布时间】:2022-01-15 14:14:38
【问题描述】:
我正在尝试编写 openssl HMAC SHA512 加密的代码,但我将我的结果与一些在线页面(例如 HMAC-SHA256 Online Generator Tool)进行比较,结果不一样我不知道我做错了什么,这是我第一次编码带有openssl加密的c++。
这是我到现在为止的代码:
char *key = "apiPrivateKey";
const unsigned char data[512] = "message";
int data_len = sha512HashData.size();
unsigned char hmac[128];
for (int i = 0; i < 128; i++)
{
hmac[i]= 0;
}
char outputBuffer[128];
for (int i = 0; i < 128; i++)
{
outputBuffer[i]= 0;
}
unsigned int len = EVP_MAX_MD_SIZE;
std::vector<unsigned char> digest(len);
HMAC_CTX *ctx;
unsigned int res_len;
ctx = HMAC_CTX_new();
HMAC_Init_ex(ctx, key, strlen((const char*)key), EVP_sha512(), NULL);
HMAC_Update(ctx, data, data_len);
HMAC_Final(ctx, hmac, &res_len);
HMAC_CTX_free(ctx);
int i = 0;
for(i = 0; i < 128; i++)
{
sprintf(outputBuffer + (i * 2), "%02x", hmac[i]);
}
//https://stackoverflow.com/a/1195705/11632453
std::string myString;
myString.assign(outputBuffer, 128);
std::cout << "ComputeHMAC512Hash: " << myString << std::endl;
return myString;
有什么建议吗?谢谢
【问题讨论】: