Cách tạo hash MD5, SHA-256 và các loại khác

· 4 phút đọc

Hashing chuyển đổi bất kỳ đầu vào nào — một mật khẩu, một tệp, một thông điệp — thành một chuỗi có độ dài cố định. Cùng một đầu vào luôn tạo ra cùng một hash, nhưng thay đổi nhỏ nhất trong đầu vào tạo ra một hash hoàn toàn khác. Điều này làm cho hashing thiết yếu để xác minh tính toàn vẹn, lưu trữ mật khẩu và chữ ký số.

Cách hashing hoạt động

Một hàm hash lấy một đầu vào ở bất kỳ kích thước nào và tạo ra một đầu ra có kích thước cố định:

Đầu vào Hash SHA-256 (16 ký tự đầu tiên)
hello 2cf24dba5fb0a30e...
Hello 185f8db32271fe25...
hello! ce06092fb948d9ff...

Lưu ý rằng một ký tự được thay đổi (h thường thành H hoa) hoặc được thêm vào thay đổi hash hoàn toàn. Đây được gọi là hiệu ứng thác.

Các thuật toán hash phổ biến

Thuật toán Độ dài Trạng thái Sử dụng cho
MD5 32 ký tự Đã bị phá (không an toàn) Checksum kế thừa, sử dụng không bảo mật
SHA-1 40 ký tự Đã bị phá (không an toàn) Chỉ hệ thống kế thừa
SHA-256 64 ký tự An toàn Tính toàn vẹn tệp, chữ ký số
SHA-512 128 ký tự An toàn Ứng dụng bảo mật cao

SHA-256 là tiêu chuẩn hiện tại cho hầu hết các sử dụng. MD5 và SHA-1 chỉ nên được sử dụng để tương tác với các hệ thống kế thừa yêu cầu chúng.

Cách tạo một hash

  1. Chọn thuật toán của bạn — chọn MD5, SHA-1, SHA-256, SHA-384 hoặc SHA-512. Sử dụng SHA-256 trừ khi có lý do cụ thể.
  2. Nhập văn bản hoặc tải lên một tệp — gõ hoặc dán văn bản, hoặc chọn một tệp để hash.
  3. Sao chép hash — kết quả là một chuỗi thập lục phân có thể sử dụng để xác minh, lưu trữ hoặc so sánh.

Sử dụng thực tế

Xác minh tính toàn vẹn của tệp — tải xuống một tệp và so sánh hash của nó với hash được công bố chính thức. Nếu chúng khớp, tệp là chính hãng và không bị hỏng.

Lưu trữ mật khẩu — các ứng dụng lưu trữ hash mật khẩu, không phải mật khẩu thực. Khi bạn đăng nhập, đầu vào của bạn được hash và so sánh với hash đã lưu trữ.

Loại bỏ trùng lặp dữ liệu — hash các tệp lớn để nhanh chóng xác định xem chúng có giống nhau không mà không cần so sánh từng byte.

HMAC cho bảo mật API — sử dụng HMAC (hash với khóa bí mật) để ký các yêu cầu API và đảm bảo chúng không bị thay đổi trong quá trình truyền.

Mẹo

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

Sự khác biệt giữa MD5, SHA-1 và SHA-256 là gì?

MD5 tạo ra một hash 128 bit (32 ký tự hex), SHA-1 tạo ra 160 bit (40 ký tự) và SHA-256 tạo ra 256 bit (64 ký tự). MD5 và SHA-1 được coi là đã bị phá về mặt mật mã. SHA-256 hiện tại an toàn và được khuyến nghị cho việc xác minh tính toàn vẹn và bảo mật.

Có thể đảo ngược một hash để tìm lại dữ liệu gốc không?

Không. Các hàm hash là một chiều theo thiết kế. Bạn không thể đảo ngược toán học một hash về đầu vào của nó. Tuy nhiên, các mật khẩu phổ biến có thể được tìm thấy trong các bảng được tính trước (rainbow tables), do đó tầm quan trọng của việc salt mật khẩu trước khi hash.

HMAC là gì?

HMAC (Hash-based Message Authentication Code) kết hợp một hàm hash với một khóa bí mật. Nó xác minh cả tính toàn vẹn và tính xác thực của dữ liệu — chứng minh rằng chúng không bị thay đổi và được sản xuất bởi ai đó biết khóa bí mật.

Dữ liệu của tôi có được gửi đến máy chủ không?

Không. Tất cả việc hashing chạy trong trình duyệt của bạn với API Web Crypto. Văn bản và tệp của bạn không bao giờ rời khỏi thiết bị của bạn.