为什么不使用AES在PHP中进行密码加密?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (192)

在我看到人们谈论在数据库中存储密码的时候,他们几乎总是使用MD5。

AES或SHA 1有什么问题?

提问于
用户回答回答于

MD5(消息摘要算法5)是加密散列函数,而高级加密标准(AES)是一种对称密钥加密算法,因此它们被用于不同的目的。散列(如MD5或SHA)用于验证密码,因为它很难反转,也就是说,从散列字符串中获取密码。另一方面,AES加密是可逆的,如果您知道密钥,则可以获得原始消息。因此,如果多条消息使用相同的密钥加密,并且知道它公开了所有消息,而如果您设法找到哈希的原始字符串(彩虹表等),则只会发现该特定实例的纯文本。你必须重新做这个工作来为另一个散列找到一个解。

用户回答回答于

如果你存储了加密的密码,则可以将其解密。由于许多人在许多不同的系统上重复使用密码,这是一件坏事。所以你使用单向函数,一个加密散列函数 - 这样一个密码可以被验证,而实际上并没有透露。

扫码关注云+社区

领取腾讯云代金券