C++ OPENSSL 库 HMAC 函数 return 值每次都不相同 运行?
C++ OPEN SSL Library HMAC funtion return value is not same everytime I run?
我正在尝试使用 C++ 从 Open SSL 库中获取 HMAC SHA256 哈希函数,但是当我打印结果十六进制值时,我发现每次 运行 代码时我的输出都不同。可能是什么问题
#include <iostream>
#include <string>
#include <openssl/hmac.h>
int main(){
std::cout << "Generating key for RRC" << std::endl;
std::array <char, 32> test = {0x69, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01,
0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01,
0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01,
0x00, 0x01 };
std::array <char, 5> string = = {0x69, 0x03, 0x01, 0x02, 0x01 };
unsigned int lengthResult;
unsigned char result[EVP_MAX_MD_SIZE];
HMAC(EVP_sha256(), (unsigned char*)test.data(), test.size(),
(unsigned char*)string.data(), string.size(),
result, &lengthResult);
for (auto i:result)
std::cout << i + 0 <<" " ;
}
HMAC_SHA256 在末尾产生一个 SHA256 和,它是 32 个字节。 EVP_MAX_MD_SIZE是64字节,用随机内存垃圾初始化。如果我编译 运行 你的代码,前 32 个字节总是相同的。
我正在尝试使用 C++ 从 Open SSL 库中获取 HMAC SHA256 哈希函数,但是当我打印结果十六进制值时,我发现每次 运行 代码时我的输出都不同。可能是什么问题
#include <iostream>
#include <string>
#include <openssl/hmac.h>
int main(){
std::cout << "Generating key for RRC" << std::endl;
std::array <char, 32> test = {0x69, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01,
0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01,
0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01,
0x00, 0x01 };
std::array <char, 5> string = = {0x69, 0x03, 0x01, 0x02, 0x01 };
unsigned int lengthResult;
unsigned char result[EVP_MAX_MD_SIZE];
HMAC(EVP_sha256(), (unsigned char*)test.data(), test.size(),
(unsigned char*)string.data(), string.size(),
result, &lengthResult);
for (auto i:result)
std::cout << i + 0 <<" " ;
}
HMAC_SHA256 在末尾产生一个 SHA256 和,它是 32 个字节。 EVP_MAX_MD_SIZE是64字节,用随机内存垃圾初始化。如果我编译 运行 你的代码,前 32 个字节总是相同的。