Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在MySQL中存储SHA-512哈希_Php_Mysql_Security - Fatal编程技术网

Php 在MySQL中存储SHA-512哈希

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) 另一个解决方案是以二进

我想知道我是否使用PHP的hash()函数来生成sha512哈希,为了能够保存哈希密码,我的MySQL表字段会是什么样子

这是我当前的MySQL密码字段布局

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个字节。