gpt4 book ai didi

C# BaseStream 返回相同的 MD5 散列,不管流中有什么

转载 作者:太空狗 更新时间:2023-10-29 20:54:46 25 4
gpt4 key购买 nike

这个问题说明了一切。这段代码

string hash = "";
using (var md5 = System.Security.Cryptography.MD5.Create())
{
hash = Convert.ToBase64String(md5.ComputeHash(streamReader.BaseStream));
}

将始终返回相同的哈希值。

如果我将所有数据从 BaseStream 传递到 MemoryStream,它每次都会给出一个唯一的哈希值。运行也是如此

string hash = "";  
using (var md5 = System.Security.Cryptography.MD5.Create())
{
hash = Convert.ToBase64String(md5.ComputeHash(
Encoding.ASCII.GetBytes(streamReader.ReadToEnd())));
}

第二个实际上更快,但我听说这是不好的做法。

我的问题是,使用 ComputeHash(stream) 的正确方法是什么。对我来说,它总是(我的意思是总是,即使我重新启动程序,这意味着它不仅仅是对引用进行哈希处理)返回相同的哈希值,而不管流中的数据如何。

最佳答案

Stream 实例可能位于流的末尾。 ComputeHash 返回从当前位置到流末尾的字节的哈希值。因此,如果当前位置是流的末尾,它将对空输入进行哈希处理。确保 Stream 实例位于流的开头。

关于C# BaseStream 返回相同的 MD5 散列,不管流中有什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17201557/

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