在MySQL中存储SHA-512哈希

PeA*_*eAk 7 php mysql security

我想知道我是否使用PHP的hash()函数生成sha512哈希我的MySQL表字段如何才能保存哈希密码.

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

char(40)
Run Code Online (Sandbox Code Playgroud)

Pas*_*TIN 18

sha512哈希表示为128个字符长的字符串.

例如,以下代码部分:

$sha512 = hash('sha512', "Hello, World!");
echo strlen($sha512);
Run Code Online (Sandbox Code Playgroud)

会给出这个输出:

128
Run Code Online (Sandbox Code Playgroud)


这意味着你char(40)太小了,你应该使用一个char(128).


另一种解决方案是将其存储为二进制形式,而不是字符串 - 这意味着64字节.

但请注意,在某些情况下,我认为处理这种表示可能更难.