Как сгенерировать SHA3 с помощью openssl 1.1.1a - PullRequest
0 голосов
/ 08 мая 2019

Редактировать: я извлек код SHA3 из этого вопроса ( Создание хэша SHA-3 в C ++ с использованием библиотеки OpenSSL ), а SHA3 находится в версии openssl 1.0.2q (но не 1.0.2r).

Я пытаюсь сгенерировать SHA3 с помощью библиотеки openssl.

#include <stdio.h>
#include <openssl/evp.h>
unsigned int SHALEN=32;
void sha3(unsigned char *digest, const unsigned char *message, size_t message_len)
{
    EVP_MD_CTX *mdctx;
    mdctx = EVP_MD_CTX_create();
    EVP_DigestInit_ex(mdctx, EVP_sha3_256(), NULL);
    EVP_DigestUpdate(mdctx, message, message_len);
    EVP_DigestFinal_ex(mdctx, digest, &SHALEN);
    EVP_MD_CTX_destroy(mdctx);
}
int main()
{
    unsigned char digest[32];
    unsigned char message[32];
    for(int i=0;i<32;i++)
        message[i]=0;
    sha3(digest,message,32);
}

Приведенный выше код работает на моем персональном Mac (с openssl 1.0.2q 2018Nov), но не на сервере (Ubuntu 16.04, версия openssl = 1.1.1a).При компиляции с

  g++ test.cpp -lcrypto 

Это дает

/tmp/ccXTFrzC.o: In function `sha3(unsigned char*, unsigned char const*, unsigned long)':
test.cpp:(.text+0x1e): undefined reference to `EVP_sha3_256'
collect2: error: ld returned 1 exit status

Я посмотрел руководство openssl, но это не очень полезно.Я что-то пропустил здесь?Заранее спасибо.

Кстати, я советую не понижать openssl для решения проблемы.

...