0

Hash Function

Hash Function Là Gì

Hash Function hay hàm băm là một hàm mã hóa trong máy tính. Hàm này được dùng dùng để mã hóa các dữ liệu với dung lượng bất kỳ về một loại dữ liệu với dung lượng nhất định. Hàm hash thường được dùng phổ biến với kiểu dữ liệu cơ bản như kiểu chuỗi, kiểu số, mảng, object... nhưng nó có thể dùng với bất cứ loại dữ liệu nào thậm chỉ cả kiểu dữ liệu binary (nội dung một file ảnh).

Hash Function

Mục đích của hàm băm là khi bạn đưa một dữ liệu đầu vào (input) với dung lượng bất kỳ nó sẽ mã hóa dữ liệu này về một dữ liệu khác với dung lượng nhất định

Giá trị đầu ra của hàm Hash function được gọi là Hash sum và quá trình chạy hàm Hash function được gọi là hashing.

Bạn cũng có thể tự viết riêng cho mình 1 hàm hash, tuy nhiên đã có rất nhiều hàm hash được viết sẵn và bạn nên sử dụng chúng. 2 hàm băm nổi tiếng thường được sử dụng trong lập trình là là MD5SHA1.

Khi mã hóa hash function luôn đảm bảo trong 2 trường hợp nếu như bạn đưa dữ liệu đầu vào là như nhau thì dữ liệu đầu ra trong từng trường hợp cũng như nhau. Ví dụ, chúng ta có hàm hash có tên là md5 thì 2 kết quả trả về từ việc chạy hàm này 2 lần với dữ liệu đầu vào đều là 5 thì dữ liệu đầu ra luôn giống nhau:

echo md5(5); // e4da3b7fbbce2345d7772b0674a318d5
echo md5(5); // e4da3b7fbbce2345d7772b0674a318d5

Ví dụ trên sử dụng hàm md5 trong PHP tuy nhiên bạn cugnx có thể sử dụng bất cứ ngôn ngữ lập trình nào khác và đa số đều có sắn thư viện của hàm này. Ở phần tiếp theo, bạn sẽ được giới thiệu về hoạt động của hàm MD5.

MD5

Trong phần này chúng ta sẽ tìm hiểu về MD5 hash function qua việc xem xét một ví dụ cụ thể về hoạt động của trang Gravatar.

Gravatar (global avatar) là trang web phổ biến trên thế giới mà ở đó người dùng có thể tải lên hình đại diện của mình (hay còn gọi là avatar). Người dùng sau khi sử dụng email để đăng ký dịch vụ (có thể là gmail, yahoo mail hay bất cứ loại mail nào khác) có thể tải lên, thay đổi và xóa avatar.

Để xác định một file avatar trên máy chủ thuộc về người dùng nào trang web này sử dụng hàm băm MD5với dữ liệu đầu vào là email của người dùng. Ví dụ:

md5('duytuann87@gmail.com'); // 3ed3d5dc8edb21fd94ffac8450ea7c50

Giá trị 3ed3d5dc8edb21fd94ffac8450ea7c50 sẽ được dùng để xác định tên file là avatar ứng với địa chỉ email này của người dùng.

Thêm Bình Luận