【问题标题】:Best practices for efficiently storing md5 hashes in mysql在 mysql 中有效存储 md5 哈希的最佳实践
【发布时间】:2011-01-20 13:26:26
【问题描述】:

可能的字段类型:

BINARY(16)
CHAR(32)
BIGINT + BIGINT

我如何决定使用哪一个?

【问题讨论】:

  • MD5 哈希通常表示为 32 位十六进制数。 CHAR(32) 可以正常工作。
  • 无。不要使用 MD5,它是 dead hash。使用 SHA-2 或更高版本,存储为一系列十六进制字符(64 个字符)。以这种方式阅读非常好,而且这是标准方法。
  • 我不擅长 MySql,但哈希通常是字节数组,所以 BINARY(16) 应该是最好的,但如果需要,可能更难针对 Binary 编写自定义 sql 问题?
  • @NoonSilk MD5 是一个完全可以接受的非加密原因(例如重复检测),但由于彩虹表,不应用于密码。

标签: mysql passwords md5


【解决方案1】:

如果列已编入索引并且您知道自己在做什么,出于性能原因,BINARY(16)

否则,CHAR(32) 很好。确保该列使用 ascii 字符集。 (例如ascii_bin

【讨论】:

  • UNHEX() 会将 MD5 转换为二进制字符串。 dev.mysql.com/doc/refman/5.0/en/…
  • 然后在 SELECTing 时使用 HEX() 将二进制转换回更易读的十六进制形式。
猜你喜欢
  • 2013-10-04
  • 2013-12-09
  • 2021-03-26
  • 2018-04-29
  • 2019-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
相关资源
最近更新 更多