十六进制表示问题
本文关键字:问题 表示 十六进制 | 更新日期: 2023-09-27 18:19:28
如果我想要以下结果:
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")));
但它并没有给我以前的结果!
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")
您在开头有最低的字节。
您想要得到的是字节数组的十六进制表示:每个字节都应该由其两个字符的十六进制值表示。
您可以在这个线程中查看几个关于如何做到这一点的不同示例。