C++ 中的 CommonHMAC
CommonHMAC in C++
我正在尝试在 mac 上使用 c++ 中的 <CommonCrypto/CommonHMAC.h>
库来使用 sha512 中的密钥对字符串进行编码。我已经有一个将字符串编码为 sha512 的函数,我只是不知道如何使用密钥来完成。这是我在尝试使用 CommonHMAC 库实现密钥时创建的函数(它显然无法正确执行)。我没有找到关于如何在 c++ 中执行此操作的文档,如果有人知道请帮助。
#include <CommonCrypto/CommonHMAC.h>
std::string sha512_encoder(std::string secret, std::string data){
const char *s = secret.c_str();
const char *m = data.c_str();
char* result = (char*)malloc(sizeof(char)*64);
size_t dataSize = (size_t)(sizeof(char)*(strlen(m)));
size_t secretSize = (size_t)(sizeof(char)*(strlen(s)));
CCHmac(kCCHmacAlgSHA512, s, secretSize, m, dataSize, result);
return result;
}
不要对结果进行堆分配,您必须将字节转换为人类可读的十六进制字符串。
std::string sha512_encoder(std::string secret, std::string data){
unsigned char result[CC_SHA512_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA512, secret.c_str(), secret.length(), data.c_str(), data.length(), result);
char sha512_str[128];
for (int i = 0; i < 64; i++)
sprintf(&sha512_str[i * 2], "%02x", (unsigned int) result[i]);
return std::string(sha512_str);
}
我正在尝试在 mac 上使用 c++ 中的 <CommonCrypto/CommonHMAC.h>
库来使用 sha512 中的密钥对字符串进行编码。我已经有一个将字符串编码为 sha512 的函数,我只是不知道如何使用密钥来完成。这是我在尝试使用 CommonHMAC 库实现密钥时创建的函数(它显然无法正确执行)。我没有找到关于如何在 c++ 中执行此操作的文档,如果有人知道请帮助。
#include <CommonCrypto/CommonHMAC.h>
std::string sha512_encoder(std::string secret, std::string data){
const char *s = secret.c_str();
const char *m = data.c_str();
char* result = (char*)malloc(sizeof(char)*64);
size_t dataSize = (size_t)(sizeof(char)*(strlen(m)));
size_t secretSize = (size_t)(sizeof(char)*(strlen(s)));
CCHmac(kCCHmacAlgSHA512, s, secretSize, m, dataSize, result);
return result;
}
不要对结果进行堆分配,您必须将字节转换为人类可读的十六进制字符串。
std::string sha512_encoder(std::string secret, std::string data){
unsigned char result[CC_SHA512_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA512, secret.c_str(), secret.length(), data.c_str(), data.length(), result);
char sha512_str[128];
for (int i = 0; i < 64; i++)
sprintf(&sha512_str[i * 2], "%02x", (unsigned int) result[i]);
return std::string(sha512_str);
}