首页 >数据库 >mysql教程 >我应该使用什么数据类型和长度来存储哈希密码?

我应该使用什么数据类型和长度来存储哈希密码?

Barbara Streisand
Barbara Streisand原创
2024-12-24 02:14:17610浏览

What Data Type and Length Should I Use for Storing Hashed Passwords?

哈希密码的数据类型和最佳长度

问题:如何确定哈希密码的适当数据类型和长度?

在实现密码哈希时,选择合适的数据类型和长度来存储哈希值至关重要。通常,哈希函数会生成固定长度的结果,但长度和表示形式会根据具体算法而有所不同。

答案:数据类型和长度的选择取决于哈希算法使用:

  • MD5: 128 位哈希;可以存储为 CHAR(32) 或 BINARY(16)。
  • SHA-1: 160 位哈希;可以存储为 CHAR(40) 或 BINARY(20)。
  • SHA-256: 256 位哈希;可以存储为 CHAR(64) 或 BINARY(32)。
  • SHA-512: 512 位哈希;可以存储为 CHAR(128) 或 BINARY(64)。
  • BCrypt: 448 位哈希;可能需要 CHAR(56)、CHAR(60)、CHAR(76)、BINARY(56) 或 BINARY(60)。

建议:

NIST 建议使用 SHA-256 或更高的哈希函数来实现互操作性应用程序。然而,仅利用这些哈希函数不足以安全存储密码。

因此,建议使用 Bcrypt 或 Argon2i 等密钥强化哈希算法。例如,PHP 的password_hash() 函数默认使用Bcrypt,生成60 个字符的哈希值。为了适应这种情况,请考虑使用 CHAR(60) 数据类型进行存储。

以上是我应该使用什么数据类型和长度来存储哈希密码?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn