C ++ OPEN SSL Library Возвращаемое значение функции HMAC не одинаково при каждом запуске? - PullRequest
1 голос
/ 14 июня 2019

Я пытаюсь использовать хэш-функцию HMAC SHA256 из Open SSL Library с C ++, однако, когда я печатаю шестнадцатеричные значения результата, я вижу, что мой вывод отличается каждый раз, когда я запускаю код. В чем может быть проблема

#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 Ответ

1 голос
/ 14 июня 2019

HMAC_SHA256 в конце выдает сумму SHA256, которая составляет 32 байта. EVP_MAX_MD_SIZE - 64 байта, инициализированный со случайным мусором памяти. Если я компилирую и запускаю ваш код, первые 32 байта всегда одинаковы.

...