使用PHP crypt()和sha-512的$ 6 $指示符,使用以下代码获得长度为118个字符的哈希值:
$salt= '$6$rounds=2500$'.substr( md5(uniqid(rand(),true)), 0,22)."$";
$hash=crypt($pass,$salt);
看起来像一个奇怪的数字,但是我可以假设这个数字是一致的,所以我可以在数据库中使用CHAR()而不是VARCHAR()吗?
答案 0 :(得分:0)
我使用CHAR()因为散列的每个字符串的散列长度通常应该相同。 VARCHAR()更适合您真正不知道长度的字符串,例如电子邮件地址。
例如,在CHAR(200)中存储短5个字符的字符串是低效的,因为你要保留空的空间,但如果所有的字符串通常都是相同的长度那么它就变得有价值了。使用适当长度的CHAR()。
VARCHAR()存储字符串和字符串的长度,这使得它更有效地存储每个sting长度不一致的字符串。