PHP crypt() sha-512 哈希长度

PHP crypt() sha-512 hash length

使用 PHP crypt() 和 sha-512 的 $6$ 指示符,我使用以下代码得到一个长度为 118 个字符的散列:

$salt= '$rounds=2500$'.substr( md5(uniqid(rand(),true)), 0,22)."$";
$hash=crypt($pass,$salt);

这似乎是一个奇怪的数字,但我是否可以假设该数字是一致的,以便我可以在数据库中使用 CHAR() 而不是 VARCHAR()?

我会使用 CHAR(),因为散列长度对于您散列的每个字符串通常应该相同。 VARCHAR() 更适合您确实不知道长度的字符串,例如电子邮件地址。

例如,在 CHAR(200) 中存储 5 个短字符串会效率低下,因为您将保留空的 space,但如果所有字符串的长度通常相同,则使用适当长度的 CHAR() 变得值得。

VARCHAR() 存储字符串和字符串的长度,这使得它在存储每个字符串长度不一致的字符串时更有效。