我在想我是如何在我的数据库中存储密码的:在CHAR(40)字段中适当加盐的SHA1字符串.但是,由于其中的字符数据实际上只是160位数的十六进制表示,我认为将它存储为BINARY(20)可能更好.
CREATE TABLE users (
password BINARY(20)
/* snip */
);
INSERT INTO users (password) VALUES (UNHEX(SHA1('mypassword'));
Run Code Online (Sandbox Code Playgroud)
正如我所看到的,这种方法的一个好处是它将该区域的大小减半,但我可以想象也可能存在一些缺点.
你怎么看?
wso*_*son 27
我们在数据库中使用二进制文件来存储大量不同的ID以节省空间,因为我们的大部分数据都包含这些ID.因为它似乎不需要节省空间(因为它只是密码,而不是其他大型项目),我认为没有任何理由在这里使用二进制文件.
我们遇到的最大问题是不断地,令人讨厌的是,在控制台中显示二进制数据(每次键入select*你都会听到一百万次哔声),你必须总是选择HEX()或插入UNHEX(),这是痛苦
最后,如果你混合和匹配(错误地)二进制和HEX/UNHEX并加入这个值,你可以匹配你从未想过的记录.
这是我的细分:
简而言之,使用固定长度的文本字段.在当前世界中计算字节没有任何好处,特别是在易于实现变化时.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
18396 次 |
| 最近记录: |