我们可以将任何格式的文件转换为字节、哈希、保存并能够在C#中检索它吗

本文关键字:保存 检索 哈希 我们 格式 任何 文件 字节 转换 | 更新日期: 2023-09-27 17:57:44

我知道这可能很复杂,但我只是在寻找关于这个想法的意见。我计划在数据库中保存一个特定的文件,然后我想知道如何使它更安全。所以我想把它转换成字节,执行哈希算法,然后把它保存在我的数据库中。但我的问题是,我不确定,也不知道这是否是正确的方法。我能把这些文件恢复到原始阶段吗?希望有人能帮忙。谢谢

我们可以将任何格式的文件转换为字节、哈希、保存并能够在C#中检索它吗

您当然可以对文件进行哈希并保存哈希值。

看看HashAlgorithm.ComputeHash

http://msdn.microsoft.com/en-us/library/xa627k19.aspx

MSDN的例子明白了这一点,但有缺陷:

FileStream fileStream = fInfo.Open(FileMode.Open);
// Be sure it's positioned to the beginning of the stream.
fileStream.Position = 0;
// Compute the hash of the fileStream.
hashValue = myRIPEMD160.ComputeHash(fileStream);

请确定并处理像FileStream这样实现IDisposable的东西。

更新

只是要明确一点。。。散列对于验证非常有用。自散列创建以来,文件没有被更改/篡改。

您仍然必须存储文件本身。您无法根据哈希重新创建文件。

如果您谈论的是执行加密哈希以使其更安全(即加密),那么问题是它是不可恢复的。

如果你想加密文件,那么我会考虑使用AES(针对C#的简单不安全双向"模糊处理")

现在,如果您正在创建文件的哈希检查值(或MD5校验和)以供以后进行比较,那么这是完全可以接受的,并且可以按照Eric的post-

执行