SHA256哈希值有多长?

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

333252 次浏览

为什么要改成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位编码选项:

  1. Base64:每个字符6位= CHAR(44),包括填充字符
  2. 十六进制:每字符4位= CHAR(64)
  3. 二进制:每字节8位= BINARY(32)