我将在password + salt上运行SHA256,但我不知道在设置MySQL数据库时需要多长时间使我的VARCHAR。什么样的长度比较好?


为什么要改成VARCHAR?它没有变化。它总是64个字符,这可以通过运行任何一个在线SHA-256计算器来确定。


正如其名称所示,sha256的长度为256位。

由于sha256返回一个十六进制表示,4位足够编码每个字符(而不是像ASCII那样的8位),因此256位将表示64个十六进制字符,因此您需要一个varchar(64),甚至一个char(64),因为长度总是相同的,根本不会变化。

演示如下:

$hash = hash('sha256', 'hello, world!');
var_dump($hash);

会给你:

$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"

例如,一个64个字符的字符串。


它是固定的64个字符,所以使用char(64)


我更喜欢使用二进制(32),因为它是优化的方式!

你可以在这32个十六进制数字(00到FF)。

因此二进制(32)!


SHA256的256位编码选项:

Base64:每个字符6位= char(44),包括填充字符 十六进制:每字符4位= char (64) 二进制:每字节8位=二进制(32)