2011-08-09 60 views
8

我將使用MD5散列來存儲加密的密碼。密碼可以是6到40個字符。存儲加密密碼所需的數據庫列大小是多少?另外,如果40個字符的散列大小非常大,那麼20個字符的密碼需要多少散列大小?生成的MD5散列的大小

我正在使用FormsAuthentication.HashPasswordForStoringInConfigFile(stringToEncrypt, "MD5");生成散列用於存儲在數據庫中。

+12

hashing!=加密 – Oded

+1

也不要使用MD5作爲密碼。使用像BCrypt或SCrypt這樣的計算成本很高的散列算法,這樣它們很難通過暴力破解。 –

回答

24

一個較新的散列函數的散列算法始終映射一任意大小的消息給一個固定長度表示。換句話說,你可以散列一個空字符串或許多千兆字節的信息。散列大小始終是固定的。

在你的情況下,散列大小是128位。當轉換爲ASCII字符串時,它將是隻包含十六進制數字的32個字符的字符串。

+0

非常感謝。我將使用32個字符列來存儲哈希密碼。 – Jatin

+8

請記住,如果你手動哈希密碼,你[做錯了](http://www.codinghorror.com/blog/2007/09/youre-probably-storing-passwords-incorrectly.html)。請[使用bcrypt](http://stackoverflow.com/questions/481160/is-bcrypt-a-good-encryption-algorithm-to-use-in-c-where-can-i-find-it)。 –

3

無論輸入多長時間,MD5散列總是正好是16個字節(128位)。