我打算SHA256
在密码+盐上运行,但是我不知道VARCHAR
在设置MySQL数据库时要花多长时间。什么是好的长度?
问问题
306016 次
5 回答
405
sha256 的长度为 256 位——正如其名称所示。
由于 sha256 返回十六进制表示,4 位足以编码每个字符(而不是 8,如 ASCII),因此 256 位将表示 64 个十六进制字符,因此您需要 a varchar(64)
,甚至 a char(64)
,因为长度始终相同,完全没有变化。
和演示:
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
会给你 :
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
即一个64个字符的字符串。
于 2010-02-10T23:04:22.787 回答
78
SHA256 的 256 位编码选项:
- Base64:每个字符 6 位 =
CHAR(44)
包括填充字符 - 十六进制:每个字符 4 位 =
CHAR(64)
- 二进制:每字节 8 位 =
BINARY(32)
于 2015-03-05T02:34:14.847 回答
32
我更喜欢使用 BINARY(32) 因为它是优化的方式!
您可以放入从(00 到 FF)的 32 个十六进制数字。
因此二进制(32)!
于 2013-06-07T21:20:49.503 回答
24
你为什么要把它变成 VARCHAR?它没有变化。它始终是 64 个字符,可以通过在其中一个在线 SHA-256 计算器中运行任何内容来确定。
于 2010-02-10T23:01:48.840 回答
7
它将被固定为 64 个字符,所以使用char(64)
于 2012-10-13T18:34:00.793 回答