【发布时间】:2010-12-15 08:06:11
【问题描述】:
我正在考虑如何在我的数据库中存储密码:在 CHAR(40) 字段中适当地加盐 SHA1 字符串。但是,由于其中的字符数据实际上只是 160 位数字的十六进制表示,我认为将其存储为 BINARY(20) 可能会更好。
CREATE TABLE users (
password BINARY(20)
/* snip */
);
INSERT INTO users (password) VALUES (UNHEX(SHA1('mypassword'));
在我看来,这种方法的一个好处是它将该字段的大小减半,但我可以想象可能也有一些缺点。
你有什么意见?
【问题讨论】:
-
每个密码只会节省几个字节。值得吗?
-
这就是我想知道的。收益可能微乎其微,但成本是多少?
-
好吧,似乎大家一致同意,好处微乎其微,没有人建议任何重大成本。如果您进行了更改,将来的备份会与过去的备份兼容吗?是否需要更改任何代码?