使用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位编码选项:

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

你为什么要把它做成VARCHAR? 它不会改变。 它总是64个字符,可以通过运行任何一个在线SHA-256计算器来确定 。

我更喜欢使用BINARY(32),因为它是最优化的方式!

您可以从(00到FF)放置32位hex数字。

所以BINARY(32)!

它将被固定64个字符,所以使用char(64)