tooly

Tạo hash

Tính MD5, SHA-1, SHA-256, SHA-384 và SHA-512 của bất kỳ văn bản hoặc tệp nào. Hash cập nhật ngay khi bạn gõ. Tệp được băm cục bộ nên bạn có thể kiểm tra các bản tải lớn một cách riêng tư.

Mọi thứ chạy trong trình duyệt — không gửi đi đâu cả

Cách sử dụng

  1. 1

    Nhập hoặc dán văn bản, hoặc chọn tệp.

  2. 2

    Cả năm hash được tính tức thì.

  3. 3

    Sao chép hash bạn cần.

Hash dùng để làm gì

Hàm băm mật mã biến đầu vào có kích thước bất kỳ thành một dấu vân tay có độ dài cố định. Cùng một đầu vào luôn cho ra cùng một giá trị băm (digest), và thay đổi chỉ một bit của đầu vào sẽ cho ra một giá trị hoàn toàn khác. Bạn không thể dựng lại đầu vào từ giá trị băm, và với các thuật toán hiện đại, trên thực tế bạn không thể tìm được hai đầu vào có cùng giá trị băm.

Điều đó khiến hash hữu ích bất cứ khi nào bạn cần biết hai thứ có giống hệt nhau không mà không phải so sánh từng byte:

  • Kiểm tra tệp tải về. ISO Linux, ảnh firmware và nhiều trình cài đặt công bố SHA-256 bên cạnh liên kết tải. Nếu tệp của bạn cho cùng giá trị, nó đã đến nơi nguyên vẹn.
  • Phát hiện tệp trùng lặp. Hai bức ảnh hoặc tài liệu có cùng SHA-256 là cùng một tệp, bất kể tên của chúng.
  • Khóa bộ nhớ đệm và ETag. Máy chủ web và công cụ build băm nội dung để biết nó có thay đổi hay không.
  • Toàn vẹn trong API. Webhook, tệp khóa gói và thuộc tính Subresource Integrity đều dựa vào giá trị băm.
  • Gỡ lỗi. So sánh hash mà mã của bạn tính ra với một giá trị tham chiếu cho thấy nhanh chóng lỗi nằm ở bước băm hay ở đầu vào.

So sánh năm thuật toán

Công cụ tính cả năm cùng lúc, nên bạn có thể đối chiếu với bất kỳ định dạng nào một trang web công bố.

  • MD5, 128 bit, 32 ký tự hex. Được thiết kế năm 1991. Từ năm 2004 đã có thể tạo va chạm trong thực tế, nên không được dùng ở nơi kẻ tấn công có thể tạo đầu vào. Vẫn phổ biến cho kiểm tra trùng lặp nhanh và checksum kiểu cũ.
  • SHA-1, 160 bit, 40 ký tự hex. Bị loại bỏ sau va chạm công khai đầu tiên năm 2017. Git từ trước đến nay nhận diện đối tượng bằng SHA-1, đó là lý do nó vẫn có mặt khắp nơi.
  • SHA-256, 256 bit, 64 ký tự hex. Mặc định hiện nay cho checksum, chứng chỉ, trình quản lý gói và blockchain.
  • SHA-384, 384 bit, 96 ký tự hex. Biến thể rút gọn của SHA-512, thường dùng trong TLS và trong hash của Subresource Integrity.
  • SHA-512, 512 bit, 128 ký tự hex. Cùng họ với SHA-256 nhưng dùng phép toán nội bộ 64 bit, có thể nhanh hơn SHA-256 trên bộ xử lý 64 bit.

Nếu được chọn, hãy công bố và kiểm tra bằng SHA-256. MD5 và SHA-1 chỉ chấp nhận được để phát hiện hỏng hóc ngẫu nhiên, không phải giả mạo.

Có được hash khớp cho văn bản

Khi giá trị băm của bạn khác với của người khác cho "cùng" một văn bản, đầu vào gần như không bao giờ thực sự giống nhau. Những điều cần kiểm tra:

  • Ký tự xuống dòng ở cuối. echo hello | sha256sum băm hello kèm một ký tự xuống dòng. Ô văn bản ở đây băm chính xác những gì bạn gõ, nên kết quả sẽ khác trừ khi bạn thêm một dòng mới ở cuối. Trên dòng lệnh, echo -n hoặc printf tránh được ký tự thừa.
  • Kiểu kết thúc dòng. Windows dùng CR LF, Linux và macOS dùng LF. Văn bản nhiều dòng được dán vào có thể đổi kiểu kết thúc dòng tùy theo nguồn.
  • Bảng mã. Văn bản được chuyển sang UTF-8 trước khi băm. Một hệ thống băm byte Latin-1 hoặc UTF-16 sẽ ra kết quả khác với bất cứ thứ gì ngoài ASCII thuần, chẳng hạn chữ tiếng Việt có dấu.
  • Ký tự vô hình. Dấu cách không ngắt và ký tự độ rộng bằng không sao chép từ trang web hoặc PDF trông giống hệt trên màn hình.
  • Chữ hoa hay thường trong hex. Giá trị băm được hiển thị bằng chữ thường. A3F… và a3f… là cùng một giá trị; hãy so sánh không phân biệt hoa thường.

Băm tệp và kiểm tra checksum

Băm tệp… đọc tệp đã chọn ngay trên máy và tính cả năm giá trị băm từ chính xác các byte của nó. Tên tệp và ngày không ảnh hưởng đến kết quả, chỉ có nội dung. Họ SHA dùng triển khai Web Crypto tích hợp của trình duyệt; MD5 được tính bằng một thư viện JavaScript nhỏ vì trình duyệt không cung cấp nó.

Để kiểm tra tệp tải về, hãy mở trang checksum của nhà phát hành, tìm dòng cho tệp của bạn và so sánh với hàng tương ứng ở đây. So sánh sáu hoặc tám ký tự đầu và cuối là cách kiểm tra nhanh; để bảo mật thật sự, hãy so sánh toàn bộ chuỗi. Nếu giá trị khác nhau, hãy tải lại tệp trước khi nghĩ đến giả mạo, vì một lần tải bị gián đoạn là lý do khả dĩ nhất.

Toàn bộ tệp được nạp vào bộ nhớ trước khi băm, nên tệp rất lớn, nhất là vài gigabyte trên điện thoại, có thể chậm hoặc thất bại. Không có gì được tải lên.

Hash không phải là gì

Một hash đơn thuần không phải là cách lưu mật khẩu. MD5 và họ SHA được thiết kế để chạy nhanh, điều cho phép kẻ tấn công thử hàng tỷ lần đoán mỗi giây với một giá trị băm bị rò rỉ. Lưu trữ mật khẩu cần một hàm cố ý chậm kèm salt, như bcrypt, scrypt hoặc Argon2. Nếu bạn chỉ cần một chuỗi bí mật mạnh, hãy dùng tạo mật khẩu.

Hash cũng không phải là mã hóa. Nó chỉ có một chiều: không có khóa nào để lấy lại bản gốc.

Câu hỏi thường gặp

Tệp của tôi có bị tải lên không?

Không. Băm dùng Web Crypto API trong trình duyệt. Tệp không bao giờ rời khỏi thiết bị.

Nên dùng hash nào?

SHA-256 cho checksum và toàn vẹn dữ liệu hiện nay. MD5 và SHA-1 đủ để phát hiện hỏng hóc ngẫu nhiên nhưng không an toàn trước giả mạo.

Có kiểm tra tệp đã tải về được không?

Có. Chọn tệp rồi so sánh SHA-256 với giá trị công bố trên trang tải.

Có giới hạn dung lượng tệp không?

Không có giới hạn cố định, nhưng toàn bộ tệp được đọc vào bộ nhớ trước khi băm, nên tệp nhiều gigabyte có thể thất bại trên thiết bị ít bộ nhớ, nhất là điện thoại. Không có gì được tải lên.

Công cụ liên quan