gpt4 book ai didi

c# - SHA 计算随机长度的哈希值

转载 作者:行者123 更新时间:2023-12-02 22:03:02 26 4
gpt4 key购买 nike

最近,我注意到 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() 进行转换,这似乎是一个巨大的错误。

最佳答案

SHA1-256 哈希值始终为 32 字节长。您在这里所做的是试图将这些字节解释为 UTF-8 编码文本,这显然是错误的,因为绝对不能保证哈希字节是有效的 UTF8 编码序列。

即使有这样的保证,UTF-8 也是一种可变长度编码:当将原始字节转换为 Unicode 字符时,您“用完”了每个字符的可变字节数(1 到 4),因此此输出code 理论上可以在 8 到 32 之间的任何位置。

总的来说,这个例子没有意义。请说明您的意图。

关于c# - SHA 计算随机长度的哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16562003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com