283

我打算SHA256在密码+盐上运行,但是我不知道VARCHAR在设置MySQL数据库时要花多长时间。什么是好的长度?

4

5 回答 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 位编码选项:

  1. Base64:每个字符 6 位 =CHAR(44)包括填充字符
  2. 十六进制:每个字符 4 位 =CHAR(64)
  3. 二进制:每字节 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 回答