我正在尝试对 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 哈希代码
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;
}