使用密码哈希来加密私钥

6 security encryption hash

我正在开发一个Web应用程序,我需要在其中加密敏感信息.我的计划是使用AES-256,其中私钥由用户密码的哈希加密.我需要存储密码的哈希值以进行身份​​验证,但显然不能用于加密私钥.我目前的想法是使用bcrypt生成用于加密私钥的密钥.对于身份验证,我的想法是简单地使用bcrypt散列密码,然后再次使用bcrypt散列该散列,然后将该散列存储在数据库中.既然它是单向的,那么应该没有办法使用存储的哈希来解密私钥?这样做有什么明显的安全问题我可能会丢失吗?

我的另一个想法是使用两种不同的加密算法,例如使用bcrypt哈希来加密私钥并存储SHA-2哈希用于身份验证.

谢谢你的帮助.

ros*_*sum 1

建议:使用两种不同的盐。当用户输入密码时,将其与随机盐连接起来并对其进行散列以用于密码识别例程。使用不同的盐并再次对其进行哈希处理以获得 AES 加密密钥。根据您想要的安全程度,您也可以扩展散列。

实际上你有:

storedPasswordCheck = SHA256(password + salt1);

AESkey = SHA256(password + salt2);
Run Code Online (Sandbox Code Playgroud)

当然,AES 密钥不会被存储,而是根据需要从用户的密码中重新生成。您将需要为每个用户存储两个单独的盐,每个盐最好至少 128 位。