Như trong hình trên, nếu mật khẩu được mã hóa, nó luôn là một bí mật ẩn trong đó ai đó có thể trích xuất mật khẩu văn bản đơn giản. Tuy nhiên, khi mật khẩu được băm, bạn cảm thấy thoải mái vì hầu như không có phương pháp nào để khôi phục mật khẩu từ giá trị băm.
Trích xuất từ Mật mã được mã hóa so với mật khẩu băm - Cái nào tốt hơn?
Mã hóa có tốt không?
Mật khẩu văn bản thuần túy có thể được mã hóa bằng các thuật toán mã hóa đối xứng như DES, AES hoặc với bất kỳ thuật toán nào khác và được lưu trữ bên trong cơ sở dữ liệu. Khi xác thực (xác nhận danh tính bằng tên người dùng và mật khẩu), ứng dụng sẽ giải mã mật khẩu được mã hóa được lưu trữ trong cơ sở dữ liệu và so sánh với mật khẩu do người dùng cung cấp cho sự bình đẳng. Trong kiểu tiếp cận xử lý mật khẩu này, ngay cả khi ai đó có quyền truy cập vào bảng cơ sở dữ liệu, mật khẩu sẽ không thể được sử dụng lại. Tuy nhiên, có một tin xấu trong phương pháp này là tốt. Nếu bằng cách nào đó ai đó có được thuật toán mã hóa cùng với khóa được sử dụng bởi ứng dụng của bạn, anh ấy / cô ấy sẽ có thể xem tất cả mật khẩu người dùng được lưu trữ trong cơ sở dữ liệu của bạn bằng cách giải mã. "Đây là lựa chọn tốt nhất tôi có", một nhà phát triển phần mềm có thể hét lên, nhưng có cách nào tốt hơn không?
Hàm băm mật mã (chỉ một chiều)
Có, có thể bạn đã bỏ lỡ điểm ở đây. Bạn có nhận thấy rằng không có yêu cầu để giải mã và so sánh? Nếu có cách tiếp cận chuyển đổi một chiều trong đó mật khẩu có thể được chuyển đổi thành một số từ được chuyển đổi, nhưng hoạt động ngược lại (tạo mật khẩu từ từ đã chuyển đổi) là không thể. Bây giờ ngay cả khi ai đó có quyền truy cập vào cơ sở dữ liệu, không có cách nào mật khẩu được sao chép hoặc trích xuất bằng cách sử dụng các từ đã chuyển đổi. Theo cách tiếp cận này, hầu như không có ai có thể biết mật khẩu tuyệt mật của người dùng của bạn; và điều này sẽ bảo vệ người dùng sử dụng cùng một mật khẩu trên nhiều ứng dụng. Những thuật toán có thể được sử dụng cho phương pháp này?