使用SHA256散列时,散列多长时间? (即,我的mysql VARCHAR应该多久?)
我将在密码+ salt上运行SHA256,但是我不知道在设置mysql数据库的时候需要多长时间才能生成VARCHAR。 什么是好长度?
sha256的长度是256位,正如其名称所示。
如果使用hex表示,则每个数字代码为4位; 所以你需要64位数字来表示256位 – 所以,你需要一个varchar(64)
,或一个char(64)
,因为长度总是相同的,根本不变。
和演示:
$hash = hash('sha256', 'hello, world!'); var_dump($hash);
会给你 :
$ php temp.php string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
即一个64个字符的string。
SHA256的256位编码选项:
- Base64:每个char = 6位
CHAR(44)
包括填充字符 - hex:每个char = 4位
CHAR(64)
- 二进制:每字节8位=
BINARY(32)
你为什么要把它做成VARCHAR? 它不会改变。 它总是64个字符,可以通过运行任何一个在线SHA-256计算器来确定 。
我更喜欢使用BINARY(32),因为它是最优化的方式!
您可以从(00到FF)放置32位hex数字。
所以BINARY(32)!
它将被固定64个字符,所以使用char(64)