Php 在MySQL中存储SHA-512哈希
我想知道我是否使用PHP的hash()函数来生成sha512哈希,为了能够保存哈希密码,我的MySQL表字段会是什么样子 这是我当前的MySQL密码字段布局Php 在MySQL中存储SHA-512哈希,php,mysql,security,Php,Mysql,Security,我想知道我是否使用PHP的hash()函数来生成sha512哈希,为了能够保存哈希密码,我的MySQL表字段会是什么样子 这是我当前的MySQL密码字段布局 char(40) sha512散列表示为128个字符的长字符串 例如,代码的以下部分: $sha512 = hash('sha512', "Hello, World!"); echo strlen($sha512); 将给出以下输出: 128 这意味着你的char(40)太小了,你应该使用char(128) 另一个解决方案是以二进
char(40)
sha512散列表示为128个字符的长字符串 例如,代码的以下部分:
$sha512 = hash('sha512', "Hello, World!");
echo strlen($sha512);
将给出以下输出:
128
这意味着你的
char(40)
太小了,你应该使用char(128)
另一个解决方案是以二进制形式存储,而不是字符串——这意味着64字节
但请注意,我想在某些情况下,处理这种表示可能会更困难。查看MySQL参考手册中关于“数据类型”的部分:您能解释一下64字节的来源吗?我试图理解数学。sha512表示为128个十六进制字符;使用十六进制时,使用两位数字表示一个字节(从0x00到0xFF);因此,要存储一个可以由128个十六进制字符表示的二进制值,如果将其存储为二进制而不是十六进制文本,则需要64个字节。