Hashing là một quá trình một chiều, sử dụng hàm toán học để biểu diễn dữ liệu bằng một giá trị hash có kích thước cố định và không thể đảo ngược.
Vì mỗi hash là duy nhất, hashing cho phép chúng ta kiểm tra tính toàn vẹn của dữ liệu. Ví dụ, GitHub sử dụng hash để phát hiện các thay đổi trong tệp.
Lệnh trên hệ điều hành dựa trên Unix:
echo "Hello World" | shasum -a 256
Using Hashes to Protect Data
Hash được sử dụng rộng rãi để lưu trữ mật khẩu. Nếu cơ sở dữ liệu bị xâm phạm, chỉ có các giá trị hash của mật khẩu bị lộ, thay vì mật khẩu ở dạng văn bản gốc.
Kẻ tấn công vẫn có thể dò tìm mật khẩu bằng cách tạo hash từ các mật khẩu phổ biến. Rainbow tables, là các bảng chứa các cặp mật khẩu và hash tương ứng, giúp tăng tốc quá trình này. Tuy nhiên, việc đoán và khớp hash của một mật khẩu phức tạp là gần như không thể.
Để tăng cường bảo mật, các tổ chức có thể sử dụng salt - một chuỗi ngẫu nhiên bí mật được kết hợp với mật khẩu trước khi hashing để chống lại việc sử dụng rainbow tables.