Bối cảnh
Bạn không bao giờ ... thực sự ... cần biết mật khẩu của người dùng. Bạn chỉ muốn xác minh một người dùng đến biết mật khẩu cho một tài khoản.
Hash It:
Lưu mật khẩu người dùng được băm (mã hóa một chiều) thông qua chức năng băm mạnh. Tìm kiếm "mật khẩu mã hóa c #" cung cấp vô số ví dụ.
Xem trình tạo hàm băm SHA1 trực tuyến để biết ý tưởng về hàm băm tạo ra (Nhưng đừng sử dụng SHA1 làm hàm băm, hãy sử dụng thứ gì đó mạnh hơn như SHA256).
Bây giờ, mật khẩu băm có nghĩa là bạn (và kẻ trộm cơ sở dữ liệu) không thể đảo ngược hàm băm đó trở lại mật khẩu ban đầu.
Cách sử dụng:
Nhưng, bạn nói, làm thế nào để tôi sử dụng mật khẩu đã được lưu trong cơ sở dữ liệu này?
Khi người dùng đăng nhập, họ sẽ đưa cho bạn tên người dùng và mật khẩu (trong văn bản gốc của nó) Bạn chỉ cần sử dụng cùng mã băm để băm mật khẩu đã nhập để có phiên bản được lưu trữ.
Vì vậy, hãy so sánh hai mật khẩu băm (băm cơ sở dữ liệu cho tên người dùng và mật khẩu đã nhập & băm). Bạn có thể biết liệu "những gì họ đã nhập" khớp với "những gì người dùng ban đầu đã nhập cho mật khẩu của họ" bằng cách so sánh các giá trị băm của họ.
Tín dụng thêm:
Câu hỏi: Nếu tôi có cơ sở dữ liệu của bạn, thì tôi không thể lấy một công cụ bẻ khóa như John the Ripper và bắt đầu thực hiện băm cho đến khi tôi tìm thấy kết quả khớp với mật khẩu được băm, lưu trữ của bạn? (vì người dùng chọn các từ ngắn, từ điển dù sao đi nữa ... nó sẽ dễ dàng)
Trả lời: Có ... có họ có thể.
Vì vậy, bạn nên 'muối' mật khẩu của bạn. Xem bài viết Wikipedia về muối
Xem ví dụ "Cách băm dữ liệu bằng muối" C #