C# 如何转换为ComputeHash返回的文件字节

C# 如何转换为ComputeHash返回的文件字节,c#,streaming,C#,Streaming,输出总是一个1kb的文件。如何将ComputeHash返回的字节成功写入并转换为文件 MD5CryptoServiceProvider测试=新的MD5CryptoServiceProvider() 结果总是一样的,因为A的长度总是一样的。同样给定一个散列,你无法得到原始值(你可以尝试破解它),这就是散列的目的。我假设你的意思是:我有一个1kb的文件,我如何从这个1kb的文件转到一个新文件 散列是不可逆的。最接近“反转”散列的方法是查看彩虹表 想象一下,假设一个长度为100个字符的字符串被赋予一个

输出总是一个1kb的文件。如何将ComputeHash返回的字节成功写入并转换为文件

MD5CryptoServiceProvider测试=新的MD5CryptoServiceProvider()


结果总是一样的,因为A的长度总是一样的。同样给定一个散列,你无法得到原始值(你可以尝试破解它),这就是散列的目的。

我假设你的意思是:我有一个1kb的文件,我如何从这个1kb的文件转到一个新文件

散列是不可逆的。最接近“反转”散列的方法是查看彩虹表


想象一下,假设一个长度为100个字符的字符串被赋予一个哈希函数,该函数返回一个字符[32]。。。您的输入有255^100种不同的可能性,而您的返回值有255^32种返回可能性。显然,会发生冲突[#输入>输出]

我不确定我是否完全理解您在寻找什么,但可能是这样吗

using(MD5CryptoServiceProvider test = new MD5CryptoServiceProvider())
{

    byte[] buffer = test.ComputeHash(File.ReadAllBytes(@"D:\test3.pdf"));
    File.WriteAllBytes(@"D:\test3.dat", buffer); // PDF would be pointless here
}

但是请记住,哈希是不可逆的,您不能从中生成任何短于字节流的内容。如果您希望能够扭转安全行为,请查看使用。

谢谢您的回复。我想使用ComputeHash的原因是流式处理大文件。在我使用谷歌搜索之后,他们说computeHash最适合于流式传输大文件,获取字节并使用字节写入文件。但我不知道如何实现它。你能进一步帮我解决我的问题吗?谢谢
using(MD5CryptoServiceProvider test = new MD5CryptoServiceProvider())
{

    byte[] buffer = test.ComputeHash(File.ReadAllBytes(@"D:\test3.pdf"));
    File.WriteAllBytes(@"D:\test3.dat", buffer); // PDF would be pointless here
}