Я в основном пытаюсь получить контрольную сумму для моих мнемонических слов.У меня есть двоичные байты, и я хочу преобразовать их в sha256, чтобы получить первые 4 бита и проверить их.
Мне потребовалось около 2 дней, чтобы понять, что хеширование отличается от текстовой строки до sha256 и от байтов до sha256.Следующая функция работает, но она хешируется как строки, а не как байты.
string sha256(const string str)
{
unsigned char hash[SHA256_DIGEST_LENGTH];
SHA256_CTX sha256;
SHA256_Init(&sha256);
SHA256_Update(&sha256, str.c_str(), str.size());
SHA256_Final(hash, &sha256);
stringstream ss;
for(int i = 0; i < SHA256_DIGEST_LENGTH; i++)
{
ss << hex << setw(2) << setfill('0') << (int)hash[i];
}
return ss.str();
}
Я новичок в openssl и не смог найти каких-либо решений в Интернете.Если бы кто-то мог адаптировать мою функцию для правильного хеширования двоичных байтов, я был бы очень благодаренБлагодарю.
1007 * Для того, чтобы уточнить вот пример: 10111110011001010101110111001111010100011111011010110001110101111011110111000101101001100011110100010100011101000011011011100000 1009 * это как текст дает мне этот хэш: 2d7ffa3c8f9c3fc043045f2564101eabf80bcdb983d1d560b6b93f52ea824942 1011 * и используются как байты дают мне это правильный хеш: 5e5c92432e692f803539715bb624cd2e35b5b491c6bc67aee87ae82600dedf12 1013 * Я использовал этот сайт для хеширования:
https://cryptii.com/hash-function