Công cụ tạo hash MD2
Tạo hash MD2 của bất kỳ văn bản nào ngay trong trình duyệt. Đầu vào UTF-8, hex hoặc Base64; đầu ra hex hoặc Base64. Miễn phí, riêng tư, không tải lên.
Chạy hoàn toàn trong trình duyệt. Dữ liệu của bạn không bao giờ bị tải lên.
Tạo hash MD2 là gì?
MD2 là thuật toán tạo giá trị băm 128 bit do Ron Rivest thiết kế năm 1989 cho các máy 8 bit và được đặc tả trong RFC 1319. Công cụ này tính giá trị băm MD2 128 bit của văn bản hoặc byte thô (hex hoặc Base64) ngay khi bạn gõ và hiển thị dưới dạng 32 ký tự hex hoặc Base64.
Cách sử dụng Tạo hash MD2
- Nhập hoặc dán dữ liệu vào ô Văn bản cần băm — giá trị băm cập nhật ngay khi bạn gõ (ô trống sẽ hiện hash của đầu vào rỗng).
- Chọn Mã hóa đầu vào: Văn bản (UTF-8) băm các ký tự dưới dạng UTF-8, còn Byte dạng hex hoặc Base64 băm các byte thô sau khi giải mã.
- Chọn Định dạng đầu ra (hex chữ thường, hex chữ hoa hoặc Base64) rồi nhấn Sao chép.
Ví dụ
abc
da853b0d3f88d99b30283a69e6ded6bb
MD2 của 3 byte ASCII "abc" (UTF-8, đầu ra hex chữ thường), là test vector chuẩn.
Khi nào nên dùng Tạo hash MD2
Dùng công cụ MD2 cho văn bản để băm chuỗi: tái tạo một giá trị trong tài liệu hoặc mã nguồn, tạo test vector, so sánh dữ liệu đầu vào của chữ ký API, hoặc kiểm tra xem chương trình lẽ ra phải xuất ra gì. Đừng dùng nó để bảo vệ bất cứ thứ gì trước kẻ tấn công — MD2 đã bị phá vỡ về mặt mật mã. Cũng đừng dùng nó để kiểm tra tệp tải về: sao chép nội dung tệp vào ô văn bản sẽ làm thay đổi ký tự xuống dòng và bảng mã, hãy dùng công cụ checksum MD2 cho tệp. Với mọi thứ mới, hãy dùng SHA-256 hoặc SHA3-256.
Tạo hash MD2 hoạt động như thế nào
MD2 đệm thông điệp thành bội số của 16 byte (mỗi byte đệm có giá trị bằng số byte đệm), nối thêm một checksum 16 byte được tính bằng bảng thay thế suy ra từ các chữ số của số pi, rồi xử lý từng khối 16 byte qua 18 vòng trên một trạng thái 48 byte với cùng S-box đó. 16 byte đầu tiên của trạng thái chính là giá trị băm 128 bit. Thuật toán hoạt động theo byte và rất chậm so với các hàm băm hiện đại. Văn bản trước tiên được chuyển thành byte (mặc định là UTF-8), nên cùng các ký tự sẽ luôn cho cùng một hash.
Các Trường Hợp Sử Dụng Phổ Biến
- Kiểm tra MD2 mong đợi của một chuỗi trong unit test hoặc fixture
- Băm các byte hex sao chép từ trình gỡ lỗi, bản bắt gói tin hoặc đặc tả giao thức
- So sánh đầu ra MD2 giữa hai ngôn ngữ lập trình cho kết quả khác nhau
- Tạo định danh hoặc khóa cache có tính xác định từ văn bản
- Tái tạo các giá trị MD2 cũ được lưu bởi một hệ thống đời trước
Lưu Ý Bảo Mật
MD2 đã lỗi thời và không an toàn. Đã có các tấn công tiền ảnh và va chạm được công bố (RFC 6149 đã chuyển MD2 sang trạng thái Historic). Chỉ dùng nó để tái tạo hoặc kiểm tra giá trị từ hệ thống cũ như chứng chỉ X.509 đời đầu; tuyệt đối không dùng cho chữ ký số, mật khẩu hay bảo vệ toàn vẹn trước kẻ tấn công. Hash thuần cũng không phù hợp để lưu mật khẩu: hãy dùng hàm băm mật khẩu chậm, có salt như Argon2, scrypt hoặc bcrypt. Mọi phép tính diễn ra cục bộ trong trình duyệt; những gì bạn nhập không được gửi đi đâu cả.
Câu Hỏi Thường Gặp
Vì sao vẫn còn người dùng MD2?
Chủ yếu để kiểm tra dữ liệu cũ: một số chứng chỉ X.509 và chữ ký PKCS#1 từ thập niên 1990 dùng md2WithRSAEncryption. Tái tạo những giá trị đó là cách dùng thực tế duy nhất hiện nay.
MD2 có giống MD4 hay MD5 không?
Không. Chúng có chung kích thước đầu ra 128 bit và cùng người thiết kế, nhưng MD2 dùng một cấu trúc hoàn toàn khác, hoạt động theo byte với S-box dựa trên số pi. Cùng một đầu vào cho ra giá trị băm không liên quan: abc là da853b0d… với MD2 và 900150983c… với MD5.
Vì sao chỉ đổi một ký tự mà hash thay đổi hoàn toàn?
Đó là hiệu ứng thác lũ (avalanche) mà mọi hàm băm mật mã đều được thiết kế để có: lật một bit đầu vào sẽ làm thay đổi khoảng một nửa trong 128 bit đầu ra, nên các đầu vào giống nhau vẫn cho giá trị băm chẳng liên quan gì đến nhau.
Dấu cách hoặc ký tự xuống dòng ở cuối có ảnh hưởng không?
Có. Hàm băm tính trên từng byte, nên abc và abc kèm ký tự xuống dòng sẽ cho hai giá trị MD2 khác nhau. Hãy chắc chắn đầu vào chứa đúng những byte bạn muốn băm.