我使用这个函数来散列我的密码:
// RETURNS: rAyZOnlNBxO2WA53z2rAtFlhdS+M7kec9hskSCpeL6j+WwcuUvfFbpFJUtHvv7ji
base64_encode(hash_hmac('sha384', $str . SC_NONCE, SC_SITEKEY, true));
我将哈希值存储在 char(64) 字段中 (MySQL -InnoDB)。
我应该使用 varchar(64) 而不是 char(64) 吗?为什么?
编辑: 我将 sha256 更改为 sha384。因为在这个例子中,sha256 总是为我返回 44 个字节。抱歉混淆。现在是 64 字节。
最佳答案
varchars 通过只使用所需的长度来节省存储空间。如果 64 位哈希总是 64,那么它在存储方面没有区别,所以在这种情况下 char 可能和 varchar 一样好。
如果您要存储可变长度的数据,那么 varchar 将避免浪费不必要的空间。
关于php - MySQL 表中的 64 位密码哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7874731/