§

Dán văn bản hoặc thả tệp để tạo mã băm

Mã hóa
§

Bộ tạo hash — SHA-256, MD5, SHA-1 trực tuyến

Cả bốn mã băm đều được tính cục bộ trong trình duyệt của bạn. Không có gì được tải lên.
§

MD5

Đã lỗi thời
§

SHA-1

Đã lỗi thời
§

SHA-256

§

SHA-512

Tổng cục Thuế yêu cầu mọi hệ thống hóa đơn điện tử tính SHA-256 cho từng tài liệu XML trước khi ký XAdES — đây là thao tác hằng ngày của lập trình viên ERP tại MISA, FAST và BRAVO. Đội bảo mật NCSC-VN dùng SHA-512 kiểm tra tính toàn vẹn bản vá phần mềm trước khi phát hành cho các bộ ngành. Nhóm DevOps tại VNG, VCCorp và FPT Software tính SHA-256 cho artifact CI/CD theo chuẩn SLSA. Kỹ sư fintech tại MoMo và ZaloPay tạo HMAC-SHA256 cho mọi webhook VietQR. Sinh viên ATTT tại HUST cũng dùng để nghiên cứu va chạm MD5 và SHA-1.

Hash mật mã là gì?

Một hàm băm mật mã nhận đầu vào có độ dài tùy ý và phát ra một mã băm có độ dài cố định. Cùng một đầu vào luôn cho cùng một mã băm; lật một bit duy nhất sẽ thay đổi khoảng một nửa số bit đầu ra. Công cụ này tính bốn mã băm được triển khai rộng rãi nhất — MD5 (RFC 1321), SHA-1, SHA-256SHA-512 (họ SHA được định nghĩa bởi FIPS 180-4) — cho bất kỳ văn bản hoặc tệp nào bạn cung cấp, mà không bao giờ gửi dữ liệu khỏi thiết bị của bạn.

Bộ tạo hash này hoạt động như thế nào?

Việc băm chạy hoàn toàn trên máy của bạn. SHA-1, SHA-256 và SHA-512 được chuyển đến API crypto.subtle.digest gốc của trình duyệt; MD5 sử dụng một triển khai miền công cộng đi kèm vì Web Crypto không cung cấp MD5. Các bước như sau:

  1. Đầu vào của bạn được đọc từ vùng văn bản, hoặc tệp của bạn được đọc từ đĩa vào một ArrayBuffer. Văn bản được mã hóa thành UTF-8 trước khi băm để mã băm khớp với những gì một lệnh gọi hashlib.sha256(text.encode()) phía máy chủ sẽ tạo ra.
  2. Mỗi thuật toán đệm thông điệp đến biên khối và xử lý nó theo từng khối, trộn các byte đầu vào với trạng thái nội bộ đang chạy qua một loạt các phép toán bit và số học theo modulo.
  3. Khi khối cuối cùng được xử lý xong, trạng thái nội bộ được hoàn thiện: MD5 cho ra 128 bit, SHA-1 cho ra 160 bit, SHA-256 cho ra 256 bit và SHA-512 cho ra 512 bit.
  4. Các byte mã băm thô được định dạng dưới dạng hex chữ thường hoặc Base64 tiêu chuẩn, tùy thuộc vào mã hóa bạn chọn phía trên các bảng.
  5. Mỗi mã băm được ghi vào vùng văn bản chỉ đọc riêng của nó kèm nút Sao chép. Bật chế độ Trực tiếp sẽ băm lại sau mỗi lần gõ phím để bạn có thể quan sát hiệu ứng thác đổ theo thời gian thực.

Tôi nên dùng thuật toán hash nào?

Bốn thuật toán đi kèm ở đây bao phủ toàn bộ khoảng từ checksum cũ đến các khuyến nghị mật mã hiện hành. Hãy chọn theo công việc, không phải theo sự quen thuộc:

  • MD5 (128 bit) — nhanh và phổ biến, nhưng đã bị phá vỡ về mặt mật mã. Các va chạm thực tế đã được công bố từ năm 2004. Chỉ nên dùng cho các checksum không liên quan đến bảo mật: khóa khử trùng lặp, cache buster, dấu vân tay kiểu ETag và xác minh tính toàn vẹn của tệp dựa trên một danh mục đáng tin cậy.
  • SHA-1 (160 bit) — cũng đã lỗi thời về mặt bảo mật. Cuộc tấn công SHAttered đã chứng minh một va chạm PDF công khai vào năm 2017. Vẫn còn thấy trong các ID đối tượng Git cũ, chứng chỉ TLS đời cũ và các cấu trúc HMAC nơi việc phá vỡ hàm băm cơ bản chưa làm lộ khóa. Đừng áp dụng cho công việc mới.
  • SHA-256 (256 bit) — mặc định đa dụng hiện tại. Được dùng trong dấu vân tay chứng chỉ TLS, mã băm khối Bitcoin, checksum bản phát hành phần mềm, mã băm hình ảnh container và hầu hết các pipeline ký mã hiện đại. Hãy chọn cái này khi không chắc chắn.
  • SHA-512 (512 bit) — cùng họ SHA-2 với SHA-256 nhưng có trạng thái nội bộ lớn hơn và kích thước từ 64 bit rộng hơn. Thường nhanh hơn SHA-256 trên CPU 64 bit và là lựa chọn ưa thích khi bạn cần biên va chạm lớn hơn hoặc mã băm dài hơn cho khóa HMAC.

Tại sao nên dùng bộ tạo hash này?

  • Quyền riêng tư: mọi byte đầu vào đều được băm cục bộ trong trình duyệt của bạn. Không tải tệp lên, không có chuyến đi mạng, không có nhật ký máy chủ. Bộ chọn tệp đọc trực tiếp từ đĩa qua File API.
  • Bốn mã băm trong một lượt: dán một lần và đọc MD5, SHA-1, SHA-256 và SHA-512 song song nhau, chuyển đổi mã hóa đầu ra giữa hex và Base64 mà không cần băm lại.
  • Đầu ra đúng chuẩn: họ SHA được ủy thác cho crypto.subtle.digest, chính là cùng một triển khai FIPS 180-4 mà hệ điều hành của bạn đã tin cậy. MD5 tuân theo RFC 1321 từng byte một.
  • Được xây dựng cho công việc xác minh: chế độ trực tiếp cho thấy hiệu ứng thác đổ khi bạn gõ; bảng tệp xử lý dữ liệu nhị phân lên đến mức bộ nhớ mà tab có thể chứa nên bạn có thể xác minh kho lưu trữ bản phát hành mà không cần terminal.

Các ứng dụng phổ biến của hàm hash là gì?

Mã băm xuất hiện trong công việc kỹ thuật hằng ngày:

  • Xác minh các bản tải xuống: so sánh mã băm SHA-256 của một kho lưu trữ bản phát hành với giá trị được công bố trên trang web của dự án để xác nhận rằng nó không bị giả mạo trong quá trình truyền.
  • Gỡ lỗi tích hợp: tái tạo chính xác MD5 hoặc SHA-256 mà một dịch vụ đối tác mong đợi trong chữ ký yêu cầu để bạn có thể tìm ra lỗi sai một đơn vị trong bộ tạo chuỗi chuẩn của mình.
  • Định danh theo nội dung: tạo một ID xác định từ một payload để dùng làm khóa cache, dấu khử trùng lặp hoặc định danh đối tượng kiểu Git.

Ví dụ về hash trông như thế nào?

Băm chuỗi ASCII hello tạo ra 5d41402abc4b2a76b9719d911017c592 là MD5, aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d là SHA-1, 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 là SHA-256, và một chuỗi hex dài 128 ký tự bắt đầu bằng 9b71d224bd62f3785d96d46ad3ea3d73... là SHA-512. Thêm một dấu cách cuối duy nhất và băm lại sẽ thay đổi mọi mã băm đến mức không thể nhận ra.

Bộ tạo mã băm này chạy hoàn toàn trong trình duyệt của bạn trên cùng các nguyên hàm mà hệ điều hành của bạn đã tin cậy: Web Crypto cho họ SHA và một thủ tục MD5 nhỏ, đã được kiểm toán cho mã băm duy nhất mà Web Crypto không cung cấp. Dán, thả một tệp, sao chép một mã băm — không có gì khác rời khỏi tab.