MD5 (MD5 Message-Digest Algorithm) là một thuật toán tóm tắt thông điệp, là một hàm băm mã hóa được dùng để chứng thực sự toàn vẹn của nội dung. Nội dung sau khi băm qua thuật toán MD5 kết quả thu được là một Checksum, được biết với tên khác là hash code hoặc hash value – có kích thước cố định 32 ký tự hexa tương đương với 128 bit, được dùng để so sánh thay vì phải dùng nội dung dữ liệu để so sánh.
Cryptography & Security Võ Lê Huy 2019-10-14 11:02:32

MD5 là gì?

MD5 (MD5 Message-Digest Algorithm) là một thuật toán tóm tắt thông điệp, là một hàm băm mã hóa được dùng để chứng thực sự toàn vẹn của nội dung.

Nội dung sau khi băm qua thuật toán MD5 kết quả thu được là một Checksum, được biết với tên khác là hash code hoặc hash value – có kích thước cố định 32 ký tự hexa tương đương với 128 bit, được dùng để so sánh thay vì phải dùng nội dung dữ liệu để so sánh.

Cách kiểm tra dữ liệu bằng MD5

Dùng 1 công cụ kiểm tra online hoặc các ngôn ngữ cấp cao hiện tại đều hỗ trợ. Trong bài viết này tôi dùng công cụ Hash MD5 online để tiện thao tác.

Giả sử ta có dữ liệu:

  • Dữ liệu: Hello MD5, I'm from Vietnam!
  • Kết quả: 802f6d18ae8bd346ef7ef65549fd6b70

Khi dữ liệu được nạp thêm, hàm băm MD5 vẫn có đầu ra với cùng số lượng ký tự (32 ký tự).

Giả sử ta có dữ liệu khác:

  • Dữ liệu: Hi Cryptography, hi MD5, I’m from Vietnam. Nice to meet you!
  • Kết quả: 994cc79e365c4a57783d3a7b3e242d90

Hàm băm MD5 làm mọi việc trở nên khó đoán, với một chuỗi số không cũng cho ra một chuỗi với không có sự sắp xếp, liên quan gì đến nhau.

Ví dụ:

  • Dữ liêu: 0000
  • Kết quả: 4a7d1ed414474e4033ac29ccb8653d9b

Hàm băm một chiều MD5 là một hàm xác định đầu ra dữ liệu Checksum nhưng không thể từ Checksum suy ra được dữ liệu. Điều này khác hoàn toàn với DES, thuật mã hóa DES thể hiện sự tiết kiệm chi phí khi với cùng một mạch điện tử mã hóa với thuật DES cũng có thể dùng để giải mã tìm được dữ liệu đầu vào mà không phải thiết kế thêm mạch giải mã.

Thuật toán băm này có tính nhạy cảm rất cao giống như thuật toán mã hóa DES, đầu ra thu được sẽ khác hoàn toàn nếu đầu vào có 1 bit thay đổi. Nguyên nhân của sự thay đổi này là đường truyền Internet, các thông tin dữ liệu hay còn gọi là gói tin trong khi truyền bị mất, hoặc do bên thứ ba cố tình tác động làm thay đổi.

Kiểm tra tính toàn vẹn của dữ liệu

Checksum được cung cấp bởi tác giả vì nội dung dữ liệu ở trạng thái nguyên bản, người dùng sau khi tải về để kiểm tra bản sao có đúng với nguyên bản hay không thì phải dùng Checksum của mình đối chiếu với Checksum được tác giả cung cấp.

Người dùng có thể lấy Checksum của bản sao một cách online thông qua các trang web hoặc offline qua ứng dụng hoặc ngay trong của sổ Command Promt của Windows.

Lượt sử và lỗ hổng của MD5

MD5 có một số lỗi nhất định chính vì vậy nó thường không được dùng cho mã hóa nâng cao.

Ronald Rivest công bố MD5 vào năm 1992 trên máy tính 32bit, nó là một trong 3 thuật toán của ông, trước đó đã có MD2 (1989) trên máy tính 8 bit và MD4 (1990) trên máy tính 32 bit. MD2 chứa nhiều sự phàn nàn về tốc độ trong khi MD4 có tốc độ nhanh hơn MD5, nhưng MD5 được dùng nhiều hơn vì nó bù lại được sự bảo mật.