我正在使用 php,我正在寻找将密码存储在 mysql 数据库中。我想知道使用加盐哈希或 openssl 加密会更安全吗?如果我为每个用户使用一个唯一的随机生成的加盐哈希并将盐存储在数据库中,有没有办法有人可以找到盐并解密它?或者,如果我使用 openssl_public_encrypt 函数使用公钥加密密码,那么使用加盐哈希是否更安全?
什么是更好的盐渍哈希或 openssl 加密?
信息安全
加密
哈希
数据库
mysql
2021-09-01 16:18:11
2个回答
通常散列和加密是针对两个不同的事情。您的情况的主要区别是散列是一种方式,而加密是两种方式。也就是说,您可以解密密码以获取纯文本,但您不能“去散列”某些内容。
如果您的系统受到威胁并且您正在使用加密,则攻击者可能会拥有解密所有密码所需的所有信息。这显然不好。如果您对密码进行哈希处理,即使攻击者可以访问哈希密码和种子,他们也无法获得纯文本密码。
出于这个原因,最好对密码进行散列而不是加密。当然,这假设您正确地进行散列。研究像 bcrypt 这样的东西来为你做这件事。
您应该使用 scrypt、bcrypt 或 PBKDF2 对密码进行哈希处理。
这个网站上有很多关于这个主题的建议。搜索“密码散列”,您会找到它。
参见,例如,如何安全地散列密码?,我应该使用哪种密码散列方法?,最安全的密码哈希算法?,有没有安全专家推荐 bcrypt 用于密码存储?.
您希望使用尽可能慢的密码散列算法,以防止在您的数据库遭到破坏时对人们的密码进行离线字典攻击。
搜索该站点,您会发现更多。