【发布时间】:2018-12-03 22:10:42
【问题描述】:
我正在尝试对 RIPEMD 160 散列的消息摘要执行 SHA256 散列。我在 Mac 平台上使用 OpenSSL 库。 我遇到的问题是获取 RIPEMD 160 的消息摘要然后对其执行另一个 SHA256 哈希的中间过程。到目前为止,我只能对字符串执行 1) SHA256 哈希,2) 单独对字符串执行 RIPEMD160 哈希。我需要对之前的 SHA256 消息摘要执行 RIPEMD160 哈希,然后对 RIPEMD 160 摘要执行第二个 SHA256 哈希……
SHA256 摘要-> RIPEMD160 哈希函数-> RIPEMD160 摘要-> 2nd 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();
}
RIPEMD160 Hash 代码
int main()
{
unsigned char digest[RIPEMD160_DIGEST_LENGTH];
char string[] = "hello world";
RIPEMD160((unsigned char*)&string, strlen(string), (unsigned
char*)&digest);
char mdString[RIPEMD160_DIGEST_LENGTH*2+1];
for(int i = 0; i < RIPEMD160_DIGEST_LENGTH; i++)
sprintf(&mdString[i*2], "%02x", (unsigned int)digest[i]);
printf("RIPEMD160 digest: %s\n", mdString);
return 0;
}
【问题讨论】:
-
那么这里的问题是什么?
-
嗨@mnistic,所以我要问的本质是.....我如何对SHA256消息的摘要执行RIPEMD160哈希,然后使用OpenSSL对结果执行另一个SHA256哈希?
标签: c++ hash openssl cryptography libcrypto