UTILS.
100% trong trình duyệt
🧂

Trình tạo & xác minh băm scrypt KDF

Suy ra khóa scrypt từ mật khẩu với chi phí N, r, p cấu hình được, hoặc xác minh mật khẩu so với chuỗi scrypt đã lưu. Chạy hoàn toàn trong trình duyệt.

Mật khẩu được băm 100% trong trình duyệt của bạn — không có gì được tải lên.

— kết quả hiển thị ở đây —

Về công cụ này

Trình tạo & xác minh băm scrypt KDF suy ra và kiểm tra đầu ra scrypt cục bộ trong trình duyệt của bạn. scrypt, do Colin Percival thiết kế và chuẩn hóa trong RFC 7914, là một hàm suy khóa memory-hard: chi phí của nó được cố ý chi phối bởi băng thông bộ nhớ để phần cứng bẻ khóa tùy chỉnh có ít lợi thế. Pipeline là PBKDF2-HMAC-SHA256 để mở rộng mật khẩu, hàm ROMix xây trên BlockMix và lõi Salsa20/8 để buộc sử dụng bộ nhớ tuần tự lớn, và một PBKDF2-HMAC-SHA256 cuối để tạo khóa suy ra với độ dài bạn chọn.

Chế độ tạo đọc 16 byte salt ngẫu nhiên từ crypto.getRandomValues và chạy scrypt với ba tham số chi phí: N là chi phí CPU/bộ nhớ và phải là lũy thừa của hai (mặc định 16384 = 2^14), r là kích thước khối (mặc định 8), và p là hệ số song song hóa (mặc định 1). Việc dùng bộ nhớ khoảng 128 · N · r byte — khoảng 16 MiB ở mặc định — và công cụ cảnh báo khi thiết lập của bạn vượt quá 256 MiB. Đầu ra là một chuỗi tự mô tả $scrypt$ln=14,r=8,p=1$<base64 salt>$<base64 key> trong đó ln = log2(N), nên mọi tham số cần để xác minh đều được mang theo băm.

Chế độ xác minh phân tích ln, r, p, salt, và khóa đã lưu ra khỏi chuỗi đó, tính lại khóa suy ra với mật khẩu ứng viên, và làm một so sánh thời gian hằng để báo cáo khớp hoặc không khớp. Lõi scrypt chạy dưới dạng một bản dựng WebAssembly không-eval theo chính sách bảo mật nghiêm ngặt của trình duyệt, nên mật khẩu được xử lý 100% trong trình duyệt của bạn và không có gì được tải lên.

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

Vì sao N phải là lũy thừa của hai?
Bước ROMix của scrypt lập chỉ mục một bảng chính xác N khối và dựa vào N là lũy thừa của hai cho việc định địa chỉ integerify-and-mask. Công cụ từ chối các giá trị không phải lũy thừa của hai. Các lựa chọn điển hình là 16384 (2^14) cho dùng tương tác và 1048576 (2^20) cho mã hóa tập tin.
scrypt dùng bao nhiêu bộ nhớ?
Khoảng 128 · N · r byte. Ở mặc định N=16384, r=8 thì đó là khoảng 16 MiB. Vì trình duyệt cấp phát cái này thực sự, các giá trị N hoặc r lớn có thể chậm hoặc thất bại trên thiết bị RAM thấp — công cụ cảnh báo trên 256 MiB.
r và p điều khiển gì?
r là kích thước khối, tỷ lệ cả việc dùng bộ nhớ lẫn lượng công việc tuần tự trên mỗi khối; tăng r nâng chi phí bộ nhớ cùng với N. p là hệ số song song hóa, chạy p phép tính scrypt độc lập, nâng chi phí CPU mà không nâng dấu chân bộ nhớ trên mỗi thể hiện.
Băm được tạo có định dạng gì?
Một chuỗi tự mô tả $scrypt$ln=<log2 N>,r=<r>,p=<p>$<base64 salt>$<base64 key>. Nó nhúng mọi tham số, nên chế độ xác minh chỉ cần chuỗi đó và mật khẩu. Mọi tính toán là cục bộ — không có gì được tải lên.

Công cụ khác