我有一个简单的问题,当我想将SHA1哈希的结果存储在MySQL数据库中时发生:
我将散列结果存储在VARCHAR字段中多长时间?
我将使用VARCHAR可变长度的数据,但不使用固定长度的数据。由于SHA-1值始终为 160位长,因此VARCHAR将仅在固定长度字段的长度上浪费一个额外的字节。
而且我也不会存储SHA1返回的值。因为每个字符只使用4位,因此需要160/4 = 40个字符。但是,如果每个字符使用8位,则只需要一个160/8 = 20个字符的长字段。
因此,我建议您使用BINARY(20)和UNHEX函数将SHA1值转换为二进制。
我比较了BINARY(20)和的存储要求CHAR(40)。
CREATE TABLE binary
( id
int unsigned auto_increment primary key, password
binary(20) not null ); CREATE TABLE char
( id
int unsigned auto_increment primary key, password
char(40) not null ); 拥有百万条记录binary(20)需要4456 万,而char(40)需要6457万。 InnoDB发动机。来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。