我将在password + salt上运行SHA256,但我不知道在设置MySQL数据库时需要多长时间使我的VARCHAR。什么样的长度比较好?
当前回答
SHA256的256位编码选项:
Base64:每个字符6位= char(44),包括填充字符 十六进制:每字符4位= char (64) 二进制:每字节8位=二进制(32)
其他回答
为什么要改成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个字符的字符串。
SHA256的256位编码选项:
Base64:每个字符6位= char(44),包括填充字符 十六进制:每字符4位= char (64) 二进制:每字节8位=二进制(32)
它是固定的64个字符,所以使用char(64)
我更喜欢使用二进制(32),因为它是优化的方式!
你可以在这32个十六进制数字(00到FF)。
因此二进制(32)!
推荐文章
- 警告用户/local/mysql/data目录不属于mysql用户
- 添加一个复合主键
- 无法添加或更新子行:外键约束失败
- 如何从本地机器mysqldump远程数据库
- 如何正确地创建复合主键- MYSQL
- 仅在Datetime列上按日期分组
- 在MySQL数据库中存储货币值的最佳数据类型
- 如何自定义'显示进程列表'在mysql?
- MySQL删除一些外键
- 用MySQL LEFT JOIN删除行
- MySQL - length() vs char_length()
- 使用PDO进行行计数
- 在Mac上安装MySQL后,使用ALTER USER语句重置MySQL root密码
- my.cnf文件在macOS上的位置
- 如何从Mac OS X上卸载MySQL ?