2014-02-11 103 views
1

我使用http://www.openwall.com/phpass/哈希密码,并做到这一点是:数据类型来存储phphash密码

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

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

我应该使用的SQL表中哪些数据类型存储$ hash?

+1

你可以使用varchar字段类型存储在数据库中 –

+0

请看看:http://stackoverflow.com/questions/247304/mysql-what-data-type-to-use-for-hashed-password-字段和长度 - 它看起来类似于您的问题 –

+0

作为重复关闭?我没有询问关于存储Bcrypt散列的问题,而是通过开放式墙壁(openwall)在phphash类中存储的内容。 – user1032531

回答

0

为了将来的证明,不要依赖任何实现使用VARBINARYTINYBLOB(可以容纳255个字节并且长度可变的东西)。这在PHP manual itself中也是推荐的。

+0

我目前使用二进制(60)。这是正确的尺寸? – user1032531

+0

只要您不更改生成散列的算法,就可以。例如,你可能会在将来更新一个更好的散列算法,这可能需要61个字节,现在你将会改变你的表格。没有任何数字的'BINARY'类型等于'BINARY(255)'。 – Fleshgrinder

+0

char(256)会更好,还是坚持二进制(60)? – user1032531