2
最近,我注意到SHA算法计算随机长度的散列。SHA计算随机长度的散列
HashAlgorithm provider;
provider = HashAlgorithm.Create("System.Security.Cryptography.SHA256");
while(!stackoverflow) {
Console.WriteLine(Encoding.UTF8.GetString(
provider.ComputeHash(Encoding.UTF8.GetBytes(
(new Random()).Next().ToString())))
.Count().ToString());
}
输出:
29
29
30
29
29
30
29
31
29
29
32
29
30
28
...
是否可以设置最大散列长度是多少? (可以使哈希无用..)或者我在计算哈希时做错了什么?编码?
编辑:
上面的代码段仅仅是一个例子。我最终需要的是一种方法,它接受一个字符串,计算字符串的散列并返回它。 HashAlgorithm.ComputeHash
需要字节并返回字节,所以我使用UTF8.GetBytes()
/UTF8.GetString()
进行转换,这似乎是一个巨大的错误。
所以不同的编码可以解决这个问题? ASCII? Unicode的?我刚刚看到使用ASCII,输出总是32个字符。随着Unicode,它是16. – Atrotygma
问题是:*你想要做什么?* – Jon
我的意图是生成一个随机和唯一的哈希用作标识符。在我的“真实”应用程序中,其他部分会散列以保证独特和随机性。上面的代码只是一个例子。我想要的是具有固定长度的十六进制字符的散列。但是这也是一个普遍的“编码/加密”问题,因为我还使用UTF8.GetString/UTF8.GetBytes和RSA密钥生成。 – Atrotygma