Tôi nhận thấy rằng thuật toán SHA512 mang lại cùng một kết quả cho dù tôi nhập xin chào hôm nay hay ngày mai hay nếu tôi sử dụng máy tính của mình hoặc của chị gái tôi.
Chà, vâng - các hàm băm sẽ không hữu ích lắm nếu đôi khi chúng đưa ra các câu trả lời khác nhau.
Cách sử dụng cổ điển cho hàm băm nằm trong thuật toán chữ ký; thuật toán cốt lõi thường chỉ xử lý các giá trị có kích thước giới hạn và chúng tôi thường muốn ký các thông báo khá dài. Vì vậy, những gì chúng tôi làm là chuyển thông điệp dài của mình thông qua hàm băm (để tạo một giá trị ngắn, trong trường hợp này là độ dài 512 bit) và ký vào giá trị ngắn đó. Nếu trình xác minh gọi hàm băm trên cùng một thông báo ban đầu và nhận được một giá trị khác, thì quá trình xác minh sẽ không hoạt động.
Với những điều trên, điều này có nghĩa là việc biết trước mã băm được xuất ra ở trên cho phép tôi giải mã rằng đầu vào SHA512 tương ứng của nó là 'xin chào'?
Chà, những gì bạn có thể làm là thử thực hiện SHA512 trên nhiều đầu vào khác nhau; nếu một trong các đầu vào tình cờ là 'xin chào', thì vâng, bạn sẽ thấy đầu ra tương tự và suy ra rằng (trừ một sự trùng hợp đáng kinh ngạc) đầu vào ban đầu cũng là 'xin chào'.
Tuy nhiên, đó thực chất là điều tốt nhất bạn có thể làm; với một hàm băm tốt (và SHA512 là một hàm băm tốt), về cơ bản không có cách nào để khôi phục chuỗi gốc (hoặc một chuỗi khác băm thành cùng một giá trị) mà không cần thử nhiều cách đoán khác nhau.