Answers:
sha256的长度为256位-顾名思义。
由于sha256返回一个十六进制表示形式,所以4位足以编码每个字符(而不是ASCII的8位),因此256位将代表64个十六进制字符,因此您需要a varchar(64)
甚至a char(64)
,因为长度始终相同,完全没有变化。
和演示:
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
会给你 :
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
即一个包含64个字符的字符串。
varchar(65)
领先!
...只是说说而已。
SELECT length(to_base64(unhex(sha2('say hello to my little friend',256))))
,无论原始字符串的长度如何,该值始终为44。
我更喜欢使用BINARY(32),因为它是优化的方式!
您可以输入从(00到FF)的32个十六进制数字。
因此BINARY(32)!
UPDATE...SET hash_column=UNHEX(sha256HexString)
。然后,在检索它时,您SELECT HEX(hash_column) AS hash_column
。
为什么要将其设为VARCHAR?它没有变化。它始终为64个字符,可以通过将任何内容运行到在线SHA-256计算器之一中来确定。
SHA-*
对密码进行哈希处理之前,请先阅读此内容。