Генерируйте sha256 с OpenSSL и C++

Я надеюсь создавать хеш с sha256 с помощью openssl и C++. Я знаю, что существует подобное сообщение в, Генерируют хеш SHA в C++, пользующемся библиотекой OpenSSL, но я надеюсь конкретно создавать sha256.

ОБНОВЛЕНИЕ:

Кажется, проблема с включать путями. Это не может найти функции OpenSSL даже при том, что я включал

#include "openssl/sha.h"

и я включал пути в свою сборку

-I/opt/ssl/include/ -L/opt/ssl/lib/ -lcrypto 

60
задан jww 13 February 2018 в 17:27
поделиться

2 ответа

Вот как я это сделал:

void sha256_hash_string (unsigned char hash[SHA256_DIGEST_LENGTH], char outputBuffer[65])
{
    int i = 0;

    for(i = 0; i < SHA256_DIGEST_LENGTH; i++)
    {
        sprintf(outputBuffer + (i * 2), "%02x", hash[i]);
    }

    outputBuffer[64] = 0;
}


void sha256_string(char *string, char outputBuffer[65])
{
    unsigned char hash[SHA256_DIGEST_LENGTH];
    SHA256_CTX sha256;
    SHA256_Init(&sha256);
    SHA256_Update(&sha256, string, strlen(string));
    SHA256_Final(hash, &sha256);
    int i = 0;
    for(i = 0; i < SHA256_DIGEST_LENGTH; i++)
    {
        sprintf(outputBuffer + (i * 2), "%02x", hash[i]);
    }
    outputBuffer[64] = 0;
}

int sha256_file(char *path, char outputBuffer[65])
{
    FILE *file = fopen(path, "rb");
    if(!file) return -534;

    unsigned char hash[SHA256_DIGEST_LENGTH];
    SHA256_CTX sha256;
    SHA256_Init(&sha256);
    const int bufSize = 32768;
    unsigned char *buffer = malloc(bufSize);
    int bytesRead = 0;
    if(!buffer) return ENOMEM;
    while((bytesRead = fread(buffer, 1, bufSize, file)))
    {
        SHA256_Update(&sha256, buffer, bytesRead);
    }
    SHA256_Final(hash, &sha256);

    sha256_hash_string(hash, outputBuffer);
    fclose(file);
    free(buffer);
    return 0;
}

Это называется так:

static unsigned char buffer[65];
sha256("string", buffer);
printf("%s\n", buffer);
67
ответ дан 24 November 2019 в 17:42
поделиться

Если вам требуется действительно привлекательное приложение на основе веб-браузера, написанное на java, вы должны изучить gwt .

-121--3504581-

Я думаю, что вы должны заменить SHA1 функцию SHA256 функцией с так-кодом из ссылки в Вашей публикации

1
ответ дан 24 November 2019 в 17:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: