Công cụ tạo hash MD4

Tạo hash MD4 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.

MD4 đã bị phá vỡ về mặt mật mã (có thể tạo va chạm). Chỉ dùng cho checksum hoặc tương thích hệ thống cũ, không dùng cho mục đích bảo mật.
MD4

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 MD4 là gì?

MD4 là hàm băm 128 bit của Ron Rivest (RFC 1320, 1990) và là tổ tiên trực tiếp của MD5, SHA-1 và RIPEMD. Công cụ này tính giá trị băm MD4 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 MD4

  1. 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).
  2. 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ã.
  3. 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ụ

Đầu vào
abc
Đầu ra
a448017aaf21d8525fc10ae87aa6729d

MD4 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 MD4

Dùng công cụ MD4 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 — MD4 đã 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 MD4 cho tệp. Hãy dùng SHA-256 cho các bước kiểm tra toàn vẹn mới.

Tạo hash MD4 hoạt động như thế nào

MD4 đệm thông điệp bằng một bit 1, các bit 0 và độ dài thông điệp 64 bit dạng little-endian cho đủ bội số của 512 bit, sau đó cho mỗi khối 512 bit chạy qua ba vòng, mỗi vòng 16 phép toán trên bốn từ 32 bit, dùng các hàm phi tuyến F, G và H, phép cộng và phép xoay trái. Bốn từ cuối cùng, ghi theo little-endian, tạo thành giá trị băm 128 bit. 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 MD4 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 MD4 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ị MD4 cũ được lưu bởi một hệ thống đời trước

Lưu Ý Bảo Mật

MD4 đã bị phá vỡ hoàn toàn. Va chạm có thể tìm được chỉ với khối lượng tính toán làm bằng tay, vậy mà nó vẫn là lõi của hash mật khẩu NTLM, đó là lý do hash NTLM bị bẻ khóa dễ dàng đến vậy. Chỉ dùng nó để tương thích (ví dụ liên kết eDonkey/ed2k, nghiên cứu NTLM); tuyệt đối không dùng cho mục đích bảo mật. 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

MD4 hiện vẫn được dùng ở đâu?

Hash mật khẩu Windows NT/NTLM là MD4 tính trên mật khẩu dạng UTF-16LE, và liên kết tệp ed2k (eDonkey) được tạo từ hash MD4 của các khối tệp. Công cụ này tính MD4 thuần; NTLM là MD4 của các byte UTF-16LE, nên bạn sẽ phải nhập mật khẩu dưới dạng hex theo UTF-16LE.

Vì sao hệ thống của tôi không hỗ trợ MD4?

OpenSSL 3 đã chuyển MD4 sang legacy provider, nên openssl md4 hoặc crypto.createHash("md4") của Node.js có thể báo lỗi theo mặc định. Công cụ này cài đặt MD4 ngay trong trình duyệt (hash-wasm), nên vẫn hoạt động bình thường.

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ị MD4 khác nhau. Hãy chắc chắn đầu vào chứa đúng những byte bạn muốn băm.

Khám phá thêm danh mục