SHA256散列需要多长时间?
sha256的长度是256位 - 正如其名称所示。
如果您使用的是十六进制表示法,则每个数字代码为4位;所以你需要64位数字来表示256位 - 所以,你需要一个varchar(64)
或char(64)
,因为长度总是相同的,根本不变。
而且演示:
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
会给你:
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
即具有64个字符的字符串。
这将是固定的64个字符,所以使用char(64)
我更喜欢使用BINARY(32),因为它是最优化的方式!
您可以从(00到FF)中放置32位十六进制数字。
因此BINARY(32)!
+1 - 我喜欢优化...给其他人在这发生......用于MySQL ...你可以使用'UPDATE ... SET hash_column = UNHEX(sha256HexString)'。然后,当检索它时,你选择HEX(hash_column)AS hash_column'。 – 2014-09-17 21:20:03
为SHA256的256个比特编码选项:
- Base64的:每焦炭=
CHAR(44)
6位包括填充字符 - 十六进制:每焦炭=
CHAR(64)
- 二进制4个比特:8个每字节位=
BINARY(32)
Base64是每4个字符3个字节,所以即使32个字节适合43个字符,实际上也需要44个。额外=被添加为最终字符 – Wilco 2015-06-02 21:23:59
在任何人阅读本文之前,请务必遵循此建议并使用SHA- *'哈希密码,[请先阅读本文](https://security.stackexchan ge.com/questions/16354/whats-the-advantage-of-using-pbkdf2-vs-sha256-to-generate-an-aes-encryption-key)。 – c00000fd 2017-05-10 05:31:33
具有示例的详细博客:http://sforsuresh.in/mysql_varchar_max_length/ – 2017-09-28 11:22:38