我想实现一个系统,除了人类令人难忘的密码之外,加密数据可以与解密所需的所有内容一起存储。我想到的系统是加密数据将与用于加密该数据的密钥一起存储,只有该密钥才会使用用户密码的哈希再次加密。然后会有另一个密码哈希也存储在同一个地方,但是这个哈希会使用不同的哈希函数。
解密过程将是:
用户输入密码
使用哈希函数A对密码进行哈希处理,并根据存储的哈希检查哈希以确保其正确
如果密码正确,则使用哈希函数B重新发送给定密码以获取密钥1
密钥1可用于解密用于加密数据块的密钥2
通过这种方式,您可以存储无限制的加密数据,所有加密数据都使用不同的随机生成的AES密钥加密,这些密钥都通过密码的哈希加密(密钥1)。理想情况下,您可以将此数据块提供给任何人,如果没有密码,他们无法解密。您还可以通过网络发送密码哈希和一个加密数据块,最终用户可以在他们知道密码的情况下解密它。
我知道对这些事情的标准回应是不要自己动手,但我想知道这个系统的安全问题是什么。主要是它可以工作,应该使用什么样的哈希函数,为什么?我也对实现这一目标的标准方法感兴趣。