Băm

Tạo các băm SHA-1, SHA-256, SHA-384, SHA-512

MD5 không được cung cấp — nó đã bị phá vỡ về mặt mật mã và không có sẵn trong API SubtleCrypto của trình duyệt. Sử dụng SHA-256 hoặc mạnh hơn.

Băm mật mã là gì?

Hàm băm mật mã chuyển đổi bất kỳ đầu vào nào — một ký tự đơn, một tài liệu 5 trang — thành một chuỗi có độ dài cố định của các ký tự hex. SHA-256 luôn tạo ra 64 ký tự hex; SHA-512, 128. Hai thuộc tính quan trọng: cùng một đầu vào luôn tạo ra cùng một băm, và rất khó để tìm hai đầu vào khác nhau có cùng một băm (kháng va chạm).

Các băm được sử dụng để kiểm tra tính toàn vẹn của tệp (tải xuống tệp? so sánh SHA-256 của nó với giá trị đã công bố), lưu trữ mật khẩu (máy chủ lưu trữ băm, không phải mật khẩu), chữ ký HMAC, và lưu trữ theo địa chỉ nội dung (Git sử dụng SHA-1 để xác định các cam kết).

Trường hợp sử dụng

  • Xác minh tính toàn vẹn của tải xuống — so sánh SHA-256 của tệp đã tải xuống với giá trị kiểm tra được liệt kê của nhà phát hành.
  • Phát hiện nội dung trùng lặp — băm các chuỗi hoặc nội dung tệp để phát hiện các bản sao mà không cần lưu trữ bản gốc.
  • Xây dựng khóa bộ nhớ đệm — chuyển đổi các đầu vào dài (URL, chuỗi truy vấn, nội dung yêu cầu) thành các khóa có độ dài cố định cho Redis hoặc Memcached.
  • Kiểm tra các đối tượng Git — tính toán SHA-1 để kiểm tra địa chỉ đối tượng blob/cây bên ngoài hệ thống Git.

Ví dụ

Đầu vàoKết quả
helloSHA-256: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
(empty string)SHA-256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

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

Tại sao không có MD5?

MD5 đã bị phá vỡ về mặt mật mã — các va chạm có thể được tạo ra trong vài giây trên một chiếc laptop. API SubtleCrypto của trình duyệt không cung cấp nó có chủ đích. Sử dụng SHA-256 hoặc mạnh hơn.

Tôi có thể băm một tệp không?

Công cụ này băm đầu vào văn bản. Để băm một tệp, hãy thả vào bảng điều khiển trình duyệt: `crypto.subtle.digest('SHA-256', await file.arrayBuffer())`.

Băm có xác định giữa các lần chạy không?

Có — SHA-256 của 'hello' luôn là cùng một giá trị. Các hàm băm là thuần khiết (không có muối, không có ngẫu nhiên) theo thiết kế.

Tôi có nên sử dụng SHA-1 không?

Tránh sử dụng cho các ứng dụng mới — nó đã bị phá vỡ cho các cuộc tấn công va chạm. SHA-1 vẫn phổ biến cho các kiểm tra tệp và Git, nhưng hãy sử dụng SHA-256 cho bất kỳ điều gì liên quan đến bảo mật.

Đầu vào của tôi có được gửi đi đâu không?

Không. Việc băm sử dụng API mã hóa gốc của trình duyệt; không có gì rời khỏi thiết bị của bạn.