Trình tạo Bcrypt
Tạo và xác minh băm mật khẩu bcrypt trực tuyến. Hệ số chi phí điều chỉnh được, salt tích hợp, xem trước băm theo thời gian thực. Mọi xử lý đều chạy cục bộ trong trình duyệt của bạn.
Bcrypt là gì?
Bcrypt là hàm băm mật khẩu được thiết kế bởi Niels Provos và David Mazières, dựa trên mật mã Blowfish. Nó được thiết kế đặc biệt để lưu trữ mật khẩu an toàn và là một trong những thuật toán băm mật khẩu được sử dụng rộng rãi nhất thế giới.
Bcrypt hoạt động như thế nào?
Bcrypt nhận mật khẩu và salt làm đầu vào, sau đó chạy quá trình thiết lập khóa tốn kém (Eksblowfish) tạo ra băm có độ dài cố định. Băm bao gồm định danh thuật toán, hệ số chi phí, salt và giá trị băm thực tế.
Hệ số chi phí trong bcrypt là gì?
Hệ số chi phí là số từ 4 đến 31 xác định số lần lặp thiết lập khóa. Mỗi lần tăng gấp đôi thời gian tính toán. Chi phí 10 nghĩa là 2^10 = 1024 lần lặp. Giá trị khuyến nghị là 10-12 cho hầu hết ứng dụng.
Salt là gì và tại sao nó quan trọng?
Salt là giá trị ngẫu nhiên 128-bit duy nhất cho mỗi băm mật khẩu. Nó ngăn kẻ tấn công sử dụng bảng cầu vồng được tính toán trước và đảm bảo mật khẩu giống nhau tạo ra băm khác nhau. Bcrypt tự động tạo và nhúng salt vào đầu ra băm.
Bcrypt có còn an toàn vào năm 2025?
Có, bcrypt vẫn là một trong những thuật toán băm mật khẩu được khuyến nghị. Mặc dù có các thuật toán mới hơn như Argon2, bcrypt được coi là an toàn khi sử dụng với hệ số chi phí phù hợp (12 trở lên).
Độ dài mật khẩu tối đa cho bcrypt là bao nhiêu?
Bcrypt có độ dài đầu vào tối đa 72 byte. Mật khẩu dài hơn 72 byte bị cắt ngắn âm thầm. Đối với mật khẩu dài hơn, hãy xem xét băm trước bằng SHA-256 trước khi áp dụng bcrypt.
Bcrypt so sánh với MD5, SHA-256 và các hàm băm khác như thế nào?
Khác với MD5 và SHA-256 được thiết kế cho tốc độ, bcrypt cố ý chậm và tốn kém tính toán. Các hàm băm mục đích chung có thể tính toán hàng tỷ lần mỗi giây, khiến chúng dễ bị tấn công brute-force.
Định dạng băm bcrypt là gì?
Băm bcrypt theo định dạng: $2b$cost$salt+hash. Ví dụ: $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy. Tiền tố $2b$ xác định phiên bản thuật toán, theo sau là hệ số chi phí, salt 22 ký tự và băm 31 ký tự.
Sự khác biệt giữa $2a$, $2b$ và $2y$ là gì?
Đây là các định danh phiên bản bcrypt. $2a$ là phiên bản gốc, $2b$ sửa một vấn đề nhỏ xử lý độ dài mật khẩu trong OpenBSD, và $2y$ là biến thể dành riêng cho PHP.
Sử dụng trình tạo bcrypt trực tuyến có an toàn không?
Khi xử lý chạy hoàn toàn trong trình duyệt của bạn (phía client), nó hoàn toàn an toàn. Không có dữ liệu mật khẩu nào được truyền đến bất kỳ máy chủ nào. Công cụ này xử lý mọi thứ cục bộ bằng JavaScript.
Làm thế nào để chọn hệ số chi phí phù hợp?
Hệ số chi phí nên cao nhất có thể trong khi giữ tốc độ tạo băm chấp nhận được. Quy tắc tốt: chọn chi phí mà việc băm mất khoảng 250-500ms trên máy chủ của bạn.
Bcrypt có thể được sử dụng để mã hóa dữ liệu không?
Không, bcrypt là hàm băm một chiều, không phải thuật toán mã hóa. Nó không thể đảo ngược để khôi phục mật khẩu gốc. Nó được thiết kế chỉ để xác minh mật khẩu.
Tại sao bcrypt chậm theo thiết kế?
Bcrypt cố ý chậm để làm cho các cuộc tấn công brute-force và từ điển tốn kém tính toán. Trong khi hàm băm bình thường có thể xử lý hàng triệu mật khẩu mỗi giây, bcrypt chỉ xử lý vài trăm.
Làm thế nào để xác minh mật khẩu với băm bcrypt?
Để xác minh, trích xuất salt và hệ số chi phí từ băm đã lưu, chạy bcrypt với cùng tham số trên mật khẩu đầu vào và so sánh băm kết quả với băm đã lưu. Nếu khớp, mật khẩu đúng.