0

我正在努力通过给每个文件一个“密码”来添加在我的网站上加密上传文件的选项,但我不确定跟踪每个单独文件的加密密钥的最佳方法。例如,在检索文件时,如果用户输入了错误的密码,我很确定它会下载文件,但不会正确解密。最好将每个文件的散列和加盐密码存储在数据库中并首先在那里匹配?或者有更好的方法吗?

4

1 回答 1

0

如果您将加密密钥存储为散列(和加盐)值,则无法检索原始加密密钥。如果您散列某些东西(使用强大的散列算法),则无法取回原始内容。

最佳机制取决于操作环境(操作系统,以及可能安装的其他软件)和要求。

根据具体要求,最好根本不存储加密密钥。关键是用户想要保护数据并且用户知道密钥。如果可以在客户端执行加密,则密钥根本不必遍历网络(例如,在 JavaScript 中加密)。如果必须在服务器上进行加密,请确保通过 https 连接发送密钥,在内存中使用它来加密文件,然后从内存中删除(如果您的语言支持立即从内存中删除某些内容...例如在 C# 中使用安全字符串)。

如果您必须保留加密密钥(这是多个级别的安全问题),您将必须说明有关操作环境的更多信息。

于 2012-10-09T16:39:09.167 回答