OPENSSL 将二进制字节转换为 SHA256 C++
OPENSSL Convert binary bytes to SHA256 C++
我基本上是在尝试为我的助记词获取校验和。 我有二进制字节,想将它们转换为 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的新手,无法在线找到任何解决方案。 如果有人可以调整我的函数以正确散列二进制字节输入,我将不胜感激。 谢谢。
为了澄清一下,这里有一个例子: 10111110011001010101110111001111010100011111011010110001110101111011110111000101101001100011110100010100011101000011011011100000
这用作文本给了我这个哈希: 2d7ffa3c8f9c3fc043045f2564101eabf80bcdb983d1d560b6b93f52ea824942
并用作字节给我这个正确的哈希: 5e5c92432e692f803539715bb624cd2e35b5b491c6bc67aee87ae82600dedf12
我用这个网站来散列:https://cryptii.com/hash-function
因此,您似乎需要将输入解释为位流。将它们分组为字节,然后开始:
unsigned char hash[SHA256_DIGEST_LENGTH];
SHA256_CTX sha256;
SHA256_Init(&sha256);
uint8_t str[] = { 0b10111110, 0b01100101, 0b01011101, 0b11001111, 0b01010001, 0b11110110, 0b10110001, 0b11010111, 0b10111101, 0b11000101, 0b10100110, 0b00111101, 0b00010100, 0b01110100, 0b00110110, 0b11100000 };
SHA256_Update(&sha256, str, sizeof(str));
SHA256_Final(hash, &sha256);
哈希输出:
5e5c92432e692f803539715bb624cd2e35b5b491c6bc67aee87ae82600dedf12
现场演示
相关文章:
- 如何在 c++ 中生成十六进制二进制数据的 sha256 哈希?
- C++:有效地将Sha256摘要放入OpenSSL Bignum?
- C++openssl SHA256运行速度比JDK SHA256实现慢
- 加密++库中的SHA256
- 如何使用 AES 和 sha256 哈希作为密钥加密++进行加密
- C++项目需要什么才能使用证书 (RSA-SHA256) 对文件进行签名
- OPENSSL 将二进制字节转换为 SHA256 C++
- 如何通过 CMake 使用他们的 SHA256 哈希下载提升?
- SHA256 HMAC使用OpenSL 1.1不编译
- 如何使用openssl/sha.h对文本文件进行SHA256哈希处理
- CMake检查下载文件的哈希值(MD5/SHA256)
- 如何使用OpenSSL的SHA256函数
- 将Botan SHA256输出转换为base64,以匹配.NET SHA256 MALAGENG().computeHa
- C++在哪里可以获得sha256 openssl的代码版本
- OpenSSL SHA256错误的结果
- 这个sha256函数出了什么问题
- C++中的SHA256哈希计算
- 无法使用 RSA-Sha256 进行签名.WatchData CSP 不是 CNG(加密 API:下一代)提供程序吗?
- 持久化sha256哈希对象
- openssl sha256两种计算方式的差异