0

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

4

2 回答 2

2

您当然可以散列文件并保存散列值。

看看 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

更新

只是要清楚......哈希对于验证文件自创建哈希以来未被更改/篡改很有用。

您仍然必须存储文件本身。您不能从哈希重新创建文件。

于 2013-02-05T03:31:18.350 回答
1

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

如果你想加密文件,那么我会考虑使用 AES(简单的不安全的双向“混淆”用于 C#

现在,如果您正在创建文件的哈希校验值(或 MD5 校验和)以供以后比较,那么根据 Eric 的帖子,这是完全可以接受和可行的

于 2013-02-05T03:35:37.760 回答