Я использую 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?
1 ответ
Структура EVP_MD
содержит описание алгоритма хеширования. Перечисленные вами функции возвращают указатель на одну из этих структур для определенного хэша. Вы должны передать один из них в качестве первого параметра в HASH
.
Например, если вы хотите хешировать с помощью SHA256, вы должны вызвать EVP_sha256
и передать его возвращаемое значение в HASH
.
Похожие вопросы
Новые вопросы
c
C - это язык программирования общего назначения, используемый для системного программирования (ОС и встраиваемых), библиотек, игр и кроссплатформенности. Этот тег следует использовать с общими вопросами, касающимися языка C, как это определено в стандарте ISO 9899 (последняя версия 9899: 2018, если не указано иное, а также для запросов, специфичных для версии, с c89, c99, c11 и т. Д.). C отличается от C ++ и не должен сочетаться с тэгом C ++ без разумной причины.