我可以使用散列密码加密zip文件并使用未散列的密码对其进行解密吗?

时间:2018-06-10 17:45:41

标签: security encryption archive

假设您希望您的用户能够每周一次从您的网站获取包含所有数据的包。

现在,为了使该软件包成为一个安全的密码保护zip文件。 (或类似的流行格式)。

密码本身是用户在网站上输入的内容(与登录无关),但我们不希望以明文形式存储密码,因此我们对其进行哈希处理,然后使用哈希字节加密最终包。

现在解压缩用户时应该只使用他们输入的原始密码。

这是否可行 - 有点像zip格式无论如何都要做的第一步哈希。

更新:该软件包是通过电子邮件发送的,但它可能是dropbox或其他第三方服务。即使我的数据中心已经消失,数据也应该是可恢复的。其他网站如何提供数据副本?当网站关闭时,这些是否也可用?我认为许多网站可以通过开放+安全存档格式获益。

2 个答案:

答案 0 :(得分:2)

加密哈希函数是一种抗冲突的单向函数,使用它无法根据哈希值计算输入值。

h(x)= y; h(y)= z

要解密zip文件,用户必须输入与您所做的完全相同的值 - 它自己的秘密的哈希值(使用与您使用的相同哈希函数计算,并使用与您添加的相同的盐计算,如果您补充一些)。

因此,您实现szenario的唯一方法是告知用户您的哈希函数,例如通过编写您自己的小“解压缩应用程序”,您提供给用户下载。这个小应用程序将未散列的密码作为输入,将它们与您在服务器上使用它们的方式完全相同,然后使用哈希值打开zip文件。

答案 1 :(得分:2)

您要查找的是非对称加密,其中使用公钥加密消息或文件,并使用私钥解密。据我所知,zip文件格式仅支持对称加密(加密和解密的密码相同)。

散列密码不能用于加密。它与公钥非常不同。所以不幸的是,你提议的方法不起作用。

但是,您是否考虑过加密下载频道而不是文件?为什么不使用密码登录网页的安全部分 - 受HTTPS保护 - 用户可以下载未加密的zip存档?在这种情况下,您可以将安全部分登录密码保存为其散列形式。

另一种选择是将敏感密码存储在硬件安全模块(HSM)中,并让HSM加密数据。 HSM可以以无法检索密码的方式使用。这就是他们加密数据的原因。这样,密码就是安全的。