tôi đã được đọc lên về an ninh mật khẩu trong PHP và tôi stumbled khi một tuyên bố thú vị:Tại sao chuỗi được băm với băm của nó khi muối trả về băm?
Băm mật khẩu với hash của nó như là muối trả về cùng băm
Nếu không có nhiều suy nghĩ, tôi đã đi trên php.net và thấy rằng đó là nói cùng một điều.
Hãy xem xét một ví dụ:
crypt("test", "test"); -> teH0wLIpW0gyQ
crypt("test", "teH0wLIpW0gyQ"); -> teH0wLIpW0gyQ
Tôi hoàn toàn có thể hiểu rằng hầm mộ trong PHP tạo ra một băm một chiều của chuỗi nhất định.
- Điều tôi không hiểu là làm thế nào chúng ta có thể nhận được cùng một đầu ra băm bằng cách sử dụng hai muối hoàn toàn khác nhau?
- Điều đó có nghĩa là có thể có các muối khác có thể mang lại cho tôi cùng một giá trị băm?
Theo dõi
Cảm ơn tất cả các bạn cho con trỏ của bạn. Bây giờ tôi có thể thấy rằng hành vi mặc định là chỉ sử dụng hai ký tự đầu tiên của muối, mà hoàn toàn trả lời tất cả các câu hỏi của tôi. Cảm thấy giống như một điều ngớ ngẩn, nhưng ...
Câu trả lời cho # 2 là không đáng kể, do nguyên tắc pigeonhole. Điều này ảnh hưởng đến hầu như tất cả mọi thứ được xây dựng trên băm và không phải là một vấn đề trong một hệ thống được thiết kế tốt, vì * none * của các đầu vào tạo ra cùng một băm là khả thi để đoán hoặc tìm ra. – delnan
Câu trả lời cho # 1 là: nó phụ thuộc vào thuật toán mã hóa. Không có câu trả lời chung cho câu hỏi đó. Tôi không biết các hoạt động cơ bản của hàm 'crypt', nhưng ngay cả khi tôi đã làm, tôi nghi ngờ nó sẽ là một câu trả lời ngắn ;-) –
Nói chung, có; có thể có nhiều hơn một muối sẽ cung cấp cho cùng một băm, nhưng với một trang web được bôi trơn tốt, điều này không phải là một nguyên nhân chính gây ra mối quan tâm –