每次运行时,C ++ OPEN SSL库HMAC函数的返回值都不相同?

时间:2019-06-14 14:17:29

标签: c++ openssl hmac

我正在尝试使用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 <<" " ;

}

1 个答案:

答案 0 :(得分:1)

HMAC_SHA256在末尾产生SHA256和,即32字节。 EVP_MAX_MD_SIZE为64字节,使用随机内存垃圾初始化。如果我编译并运行代码,则前32个字节始终相同。