Hash Function – Hàm Băm

Trong cấu trúc dữ liệu hay mật mã, Hash function được định nghĩa là một hàm số nhận vào biến số là một chuỗi bất kỳ và cho ra output là một chuỗi có chiều dài cố định. Ví dụ: MD5, SHA256, SHA3…
Các tính chất của Hash Function:

  1. Pre-image resistance: Cho một giá trị h là giá trị đầu ra của hàm Hash H, rất khó để tìm được m sao cho h = H(m). Hay nói cách khác, Hash functions là các hàm một chiều.
  2. Second pre-image resistance: cho giá trị đầu vào của hàm Hash H là m1, rất khó để tìm ra m2 sao cho: H(m1) = H(m2)
  3. Collision resistance: Rất khó để tìm 2 giá trị m1, m2 của hàm Hash H sao cho H(m1) = H(m2). (tránh đụng độ)

Hash function có các ứng dụng trong thực tế như sau:

  1. Xác nhận tính toàn vẹn của tài liệu: Bằng cách lưu trữ giá trị hash của tài liệu nguyên bản rồi so sánh với giá trị hash của một bản sao nào đó để xác nhận bản sao đó có bị chỉnh sửa hay không.
  2. Tham gia vào quá trình xác nhận chữ ký số: Thay vì người ta mã hóa toàn bộ văn bản cần ký, người ta chỉ cần Hash toàn bộ nội dung của văn bản rồi ký lên giá trị hash đã tính.
  3. Xác nhận password: Thay vì lưu trữ password ở dạng clear text, người ta lưu password ở dạng hash, sau đó so sánh với hash của dữ liệu nhập của login.
  4. Proof-of-work: hash function là nguyên liệu chính trong luật đồng thuận (concensus) của blockchain bitcoin. Xin phép được nói rõ hơn vấn đề này ở bài viết khác.

No Comments

Post A Comment