0

如果我想要以下结果:

RIPEMD-160("The quick brown fox jumps over the lazy dog") =
 37f332f68db77bd9d7edd4969571ad671cf9dd3b

我试过这个:

string hash11 = System.Text.Encoding.ASCII.GetString(RIPEMD.ComputeHash(Encoding.ASCII.GetBytes("The quick brown fox jumps over the lazy dog")));

但它没有给我以前的结果!

4

2 回答 2

1

ComputeHash 函数为您提供一个字节数组,其中包含值 (0x37, 0xF3, ...)。如果您使用 GetString,它将获取字节中的每个值并使用具有该值的字符,它不会将该值转换为字符串。

你可以像这样转换它:

var bytes = RIPEMD.ComputeHash(Encoding.ASCII.GetBytes("The quick brown fox jumps over the lazy dog"));
string hash11 = "";
foreach(var curByte in bytes)
    hash11 = curByte.ToString("X2") + hash11; // or curByte.ToString("X") if for example 9 should not get 09

就像你在开头有最高字节一样。和

hash11 += curByte.ToString("X2")

你在开始时有最低字节。

于 2012-01-04T08:07:06.227 回答
1

你想要得到的是字节数组的十六进制表示:每个字节应该由它的两个字符的十六进制值表示。

您可以查看此线程以获取有关如何执行此操作的几个不同示例。

于 2012-01-04T08:10:13.790 回答