Я использую OpenSSL. Я хочу рассчитать Mac сообщений, используя алгоритм HMAC. Определения HMAC следующие:

unsigned char *HMAC(const EVP_MD *evp_md, const void *key,
                     int key_len, const unsigned char *d, int n,
                     unsigned char *md, unsigned int *md_len);

Теперь я считаю, что первым параметром HMAC является EVP_MD. Я заметил, что многие функции возвращают этот параметр. Где я могу найти содержимое EVP_MD в его справочнике или исходном коде.

 const EVP_MD *EVP_md_null(void);
 const EVP_MD *EVP_md2(void);
 const EVP_MD *EVP_md5(void);
 const EVP_MD *EVP_sha(void);
 const EVP_MD *EVP_sha1(void);
 const EVP_MD *EVP_dss(void);
 const EVP_MD *EVP_dss1(void);
 const EVP_MD *EVP_mdc2(void);
 const EVP_MD *EVP_ripemd160(void);

 const EVP_MD *EVP_sha224(void);
 const EVP_MD *EVP_sha256(void);
 const EVP_MD *EVP_sha384(void);
 const EVP_MD *EVP_sha512(void);

Какая связь между EVP_MD и EVP_MD_CTX?

0
Land 1 Авг 2020 в 05:55

1 ответ

Лучший ответ

Структура EVP_MD содержит описание алгоритма хеширования. Перечисленные вами функции возвращают указатель на одну из этих структур для определенного хэша. Вы должны передать один из них в качестве первого параметра в HASH.

Например, если вы хотите хешировать с помощью SHA256, вы должны вызвать EVP_sha256 и передать его возвращаемое значение в HASH.

1
dbush 1 Авг 2020 в 03:01