我将在password + salt上运行SHA256,但我不知道在设置MySQL数据库时需要多长时间使我的VARCHAR。什么样的长度比较好?
为什么要改成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位编码选项:
Base64:每个字符6位= char(44),包括填充字符 十六进制:每字符4位= char (64) 二进制:每字节8位=二进制(32)
推荐文章
- 导入大型sql文件时,MySQL服务器已经消失
- 按两列排列MySQL表
- 如何从我的MySQL表删除约束?
- 如何从日期时间列选择日期?
- 我如何列出一个表中的所有列?
- MySQL搜索并替换字段中的一些文本
- 如何查找所有具有引用特定表的外键的表。列和那些外键的值?
- SHA256哈希值有多长?
- 无法通过套接字/var/lib/ MySQL / MySQL连接到本地MySQL服务器。袜子”(2)
- 如何调试锁定等待超时超过MySQL?
- 如何将所有表从MyISAM转换为InnoDB?
- 如何停止正在运行的MySQL查询?
- 在数据库中存储JSON vs.每个键都有一个新列
- 如何启用MySQL查询日志?
- 在MySQL中“unsigned”是什么意思,什么时候使用它?