php - MySQL 表中的 64 位密码哈希

标签 php mysql hash database-schema

我使用这个函数来散列我的密码:

// 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/

相关文章:

mysql - Symfony 在设定时间后删除记录

PHP MYSQL删除语法错误

mysql - 备份与 MySQL 特定用户相关的所有权限

ruby - 如何使用 Setter 使 Ruby 类表现得像散列

java - 查找所有散列到相同散列值的 n 个键

php - echo 未传递 var 已传递 while

php - 为什么这个 PHP 代码不起作用?

C++:如何在编译时创建常量?

php - 捕获 PHP 中未定义的类方法

php - 我设置 PHP session 的方式是否存在安全问题?