2011-08-09 35 views
8

Tôi sẽ sử dụng băm MD5 để lưu trữ mật khẩu được mã hóa. Mật khẩu có thể dài từ 6 đến 40 ký tự. Kích thước cột cơ sở dữ liệu cần thiết để lưu trữ mật khẩu được mã hóa là gì. Ngoài ra, nếu kích thước băm 40 ký tự là rất lớn, thì kích thước băm sẽ có mật khẩu 20 ký tự mất bao nhiêu?Kích thước của băm MD5 được tạo ra

Tôi đang sử dụng FormsAuthentication.HashPasswordForStoringInConfigFile(stringToEncrypt, "MD5"); để tạo băm để lưu trữ trong Cơ sở dữ liệu.

+12

băm! = Mã hóa – Oded

+1

Cũng không sử dụng MD5 cho mật khẩu. Sử dụng thuật toán băm tốn kém tính toán như BCrypt hoặc SCrypt để chúng khó đảo ngược bằng vũ lực. –

Trả lời

24

Thuật toán băm luôn ánh xạ một thông báo có kích thước tùy ý đến độ dài cố định. Nói cách khác, bạn có thể băm một chuỗi rỗng hoặc nhiều gigabyte thông tin. Kích thước băm luôn cố định.

Trong trường hợp của bạn, kích thước băm là 128 bit. Khi được chuyển đổi thành chuỗi ASCII, chuỗi này sẽ là chuỗi ký tự 32 chỉ chứa các chữ số thập lục phân.

+0

Cảm ơn rất nhiều. Tôi sẽ sử dụng một cột 32 char để lưu trữ mật khẩu băm. – Jatin

+8

Hãy nhớ, nếu bạn đang băm mật khẩu theo cách thủ công, bạn đang [làm sai] (http://www.codinghorror.com/blog/2007/09/youre-probably-storing-passwords-incorrectly.html). Vui lòng [sử dụng bcrypt] (http://stackoverflow.com/questions/481160/is-bcrypt-a-good-encryption-algorithm-to-use-in-c-where-can-i-find-it). –

3

Băm MD5 luôn chính xác 16 byte (128 bit), cho dù đầu vào có dài bao nhiêu.

6

http://msdn.microsoft.com/en-us/library/system.security.cryptography.md5.aspx

Kích thước băm cho các thuật toán MD5 là 128 bit, không phụ thuộc vào chiều dài của chuỗi được băm.

Hãy xem xét sử dụng các hàm băm mới hơn như SHA 256.

+1

Hoặc để lưu trữ mật khẩu, [sử dụng bcrypt] (http://stackoverflow.com/questions/481160/is-bcrypt-a-good-encryption-algorithm-to-use-in-c-where-can-i-find -này) –

Các vấn đề liên quan