Băm là một chuỗi có độ dài cố định (bản tóm tắt) được tạo ra từ dữ liệu đầu vào có bất kỳ kích thước nào bằng cách sử dụng hàm băm. Quá trình này là một chiều—bạn không thể giải mã hoặc đảo ngược băm để lấy dữ liệu gốc. Đó là lý do tại sao "mã hóa băm" là một thuật ngữ không chính xác; băm không phải là mã hóa.
Các thuật toán băm phổ biến bao gồm:
MD5 (đã lỗi thời để sử dụng cho mục đích bảo mật)
SHA-1 (đã lỗi thời)
SHA-256, SHA-512 (thuộc họ SHA-2)
SHA-3
bcrypt, scrypt, Argon2 (để băm mật khẩu an toàn)
Băm phục vụ nhiều mục đích trong an ninh mạng và tính toàn vẹn của dữ liệu. Các lý do chính để sử dụng hàm băm bao gồm:
Tính toàn vẹn dữ liệu: Đảm bảo dữ liệu không bị thay đổi (ví dụ: tổng kiểm tra tệp).
Lưu trữ mật khẩu: Lưu trữ mật khẩu một cách an toàn bằng cách so sánh các hàm băm thay vì lưu trữ mật khẩu thực.
Chữ ký số: Hàm băm được ký thay vì các tài liệu lớn.
Hiệu quả: Các giá trị băm nhỏ, có kích thước cố định sẽ so sánh nhanh hơn các khối dữ liệu lớn.
Vì hàm băm có tính xác định và nhanh nên chúng lý tưởng cho các tác vụ xác minh.
Sử dụng hàm băm bao gồm:
Nhập dữ liệu (ví dụ: tệp, chuỗi hoặc mật khẩu).
Xử lý dữ liệu bằng thuật toán băm.
Lấy bản tóm tắt, là chuỗi có kích thước cố định biểu diễn duy nhất dữ liệu đầu vào.
Để bảo vệ mật khẩu:
Kết hợp mật khẩu với muối (dữ liệu ngẫu nhiên).
Áp dụng hàm băm an toàn (ví dụ: bcrypt hoặc Argon2).
Lưu trữ băm và muối kết quả một cách an toàn.
Vì băm không thể đảo ngược, bạn xác minh đầu vào (như mật khẩu) bằng cách băm lại và so sánh băm mới với băm đã lưu trữ.
Nên sử dụng băm khi:
Cần xác minh tính toàn vẹn của dữ liệu (ví dụ: kiểm tra xem có bị hỏng hoặc giả mạo không).
Mật khẩu cần được lưu trữ an toàn (không được mã hóa hoặc văn bản thuần túy).
Chữ ký số và chứng chỉ có liên quan (băm đảm bảo tính xác thực của tài liệu).
Cần so sánh dữ liệu nhanh (ví dụ: trong bảng băm hoặc bộ đệm).
Băm là không phù hợp khi bạn cần khôi phục dữ liệu gốc sau này—đó chính là mục đích của mã hóa.