我在考慮如何將密碼存儲在數據庫中:在CHAR(40)字段中適當地醃製SHA1字符串。但是,由於其中的字符數據實際上只是160位數的十六進制表示,所以我認爲將它存儲爲BINARY(20)可能會更好。在MySQL中將十六進制值存儲爲二進制文件
CREATE TABLE users (
password BINARY(20)
/* snip */
);
INSERT INTO users (password) VALUES (UNHEX(SHA1('mypassword'));
在我看來,這種方法的一個好處是,它半部場的大小,但我能想象可能有一些缺點太多。
您的意見是?
每個密碼只能保存幾個字節。這值得麼? – pavium 2009-11-11 04:09:41
這就是我想知道的。好處可能很渺茫,但成本是多少? – nickf 2009-11-11 04:20:42
好吧,似乎有一般的協議,好處是輕微的,沒有人建議任何重大成本。如果您進行了更改,將來的備份是否與以前的備份兼容?是否有任何代碼需要更改? – pavium 2009-11-11 04:42:12