【问题标题】:Data type to store phphash password [duplicate]存储phphash密码的数据类型[重复]
【发布时间】:2014-03-09 08:49:36
【问题描述】:

我正在使用http://www.openwall.com/phpass/ 对密码进行哈希处理,并且这样做:

$t_hasher = new passwordhash(8, FALSE);
$hash =$t_hasher->HashPassword('myPassword');

一个典型的哈希看起来像$2a$08$xKcZiTBgnoJ2z/aXg2K7m.0roI4gMDO3VSYmBAH/nYAYjPNBfo1Lq

我应该为 SQL 表使用什么数据类型来存储 $hash?

【问题讨论】:

  • 你可以使用varchar字段类型存储在DB中
  • 请看一下:stackoverflow.com/questions/247304/… - 看起来和你的问题很相似
  • 重复关闭?我没有问关于存储 Bcrypt 哈希,而是通过 openwall 的 phphash 类存储的东西。
  • @user1032531 您的示例哈希是 Bcrypt 哈希。

标签: php mysql security hash cryptography


【解决方案1】:

为了未来的证明,不要依赖任何实现,请使用 VARBINARYTINYBLOB(最多可容纳 255 个字节且长度可变的东西)。 PHP manual itself 中也建议这样做。

【讨论】:

  • 我目前正在使用二进制(60)。这是正确的尺寸吗?
  • 只要您不更改生成哈希的算法就可以了。例如,您将来可能会更新到更好的散列算法,这可能需要 61 个字节,现在您将更改您的表。类型BINARY不带任何数字等于BINARY(255)
  • char(256) 会更好,还是坚持使用 binary(60)?
  • 绝对坚持二进制类型,只是为了确保编码与哈希算法生成的编码完全相同,并且不会被您的 DBMS 系统篡改。
  • 我可能有一天会更新 phphash 库,但我不知道,算法已经改变了。也许从二进制(60)更改为二进制(256)?
猜你喜欢
  • 2013-10-04
  • 2012-09-25
  • 2011-10-14
  • 2012-02-16
  • 2011-12-25
  • 1970-01-01
  • 1970-01-01
  • 2017-10-15
  • 2014-06-23
相关资源
最近更新 更多