UTILS.
ทำงานในเบราว์เซอร์ 100%
🧂

ตัวสร้างและตรวจสอบแฮช scrypt KDF

อนุมานคีย์ scrypt จากรหัสผ่านด้วยต้นทุน N, r, p ที่กำหนดค่าได้ หรือตรวจสอบรหัสผ่านกับสตริง scrypt ที่จัดเก็บไว้ ทำงานทั้งหมดในเบราว์เซอร์ของคุณ

รหัสผ่านถูกแฮช 100% ในเบราว์เซอร์ของคุณ — ไม่มีการอัปโหลด

— ผลลัพธ์จะแสดงที่นี่ —

เกี่ยวกับเครื่องมือนี้

ตัวสร้างและตรวจสอบแฮช scrypt KDF อนุมานและตรวจสอบผลลัพธ์ scrypt ภายในเบราว์เซอร์ของคุณ scrypt ออกแบบโดย Colin Percival และเป็นมาตรฐานใน RFC 7914 เป็นฟังก์ชันอนุมานคีย์แบบ memory-hard: ต้นทุนของมันถูกครอบงำโดยแบนด์วิดท์หน่วยความจำโดยเจตนา เพื่อให้ฮาร์ดแวร์แคร็กที่สร้างขึ้นเองได้เปรียบน้อย ไปป์ไลน์คือ PBKDF2-HMAC-SHA256 เพื่อขยายรหัสผ่าน ฟังก์ชัน ROMix ที่สร้างบน BlockMix และ Salsa20/8 core เพื่อบังคับการใช้หน่วยความจำแบบลำดับขนาดใหญ่ และ PBKDF2-HMAC-SHA256 สุดท้ายเพื่อสร้างคีย์ที่อนุมานได้ตามความยาวที่คุณเลือก

โหมดสร้างอ่านไบต์ salt แบบสุ่ม 16 ไบต์จาก crypto.getRandomValues และรัน scrypt ด้วยพารามิเตอร์ต้นทุนสามตัว: N คือต้นทุน CPU/หน่วยความจำและต้องเป็นกำลังสอง (ค่าเริ่มต้น 16384 = 2^14), r คือขนาดบล็อก (ค่าเริ่มต้น 8) และ p คือแฟกเตอร์การขนาน (ค่าเริ่มต้น 1) การใช้หน่วยความจำอยู่ที่ประมาณ 128 · N · r ไบต์ ประมาณ 16 MiB ที่ค่าเริ่มต้น และเครื่องมือเตือนเมื่อการตั้งค่าของคุณจะเกิน 256 MiB ผลลัพธ์คือสตริงที่อธิบายตัวเอง $scrypt$ln=14,r=8,p=1$<base64 salt>$<base64 key> โดย ln = log2(N) ดังนั้นทุกพารามิเตอร์ที่จำเป็นในการตรวจสอบจึงติดไปกับแฮช

โหมดตรวจสอบแยกวิเคราะห์ ln, r, p, salt และคีย์ที่จัดเก็บออกจากสตริงนั้น คำนวณคีย์ที่อนุมานใหม่ด้วยรหัสผ่านที่เป็นตัวเลือก และทำการเปรียบเทียบแบบ constant-time เพื่อรายงานตรงหรือไม่ตรง scrypt core รันเป็น WebAssembly build แบบไม่มี eval ภายใต้นโยบายความปลอดภัยที่เข้มงวดของเบราว์เซอร์ ดังนั้นรหัสผ่านจึงประมวลผล 100% ในเบราว์เซอร์ของคุณและไม่มีการอัปโหลด

คำถามที่พบบ่อย

ทำไม N ต้องเป็นกำลังสอง?
ขั้น ROMix ของ scrypt จัดทำดัชนีตารางของบล็อก N บล็อกพอดี และอาศัยการที่ N เป็นกำลังสองสำหรับการกำหนดที่อยู่แบบ integerify-and-mask เครื่องมือปฏิเสธค่าที่ไม่ใช่กำลังสอง ตัวเลือกทั่วไปคือ 16384 (2^14) สำหรับการใช้งานแบบโต้ตอบ และ 1048576 (2^20) สำหรับการเข้ารหัสไฟล์
scrypt ใช้หน่วยความจำเท่าใด?
ประมาณ 128 · N · r ไบต์ ที่ค่าเริ่มต้น N=16384, r=8 นั่นคือประมาณ 16 MiB เนื่องจากเบราว์เซอร์จัดสรรสิ่งนี้จริง ค่า N หรือ r ที่ใหญ่อาจช้าหรือล้มเหลวบนอุปกรณ์ที่มี RAM ต่ำ — เครื่องมือเตือนเมื่อเกิน 256 MiB
r และ p ควบคุมอะไร?
r คือขนาดบล็อก ซึ่งปรับสเกลทั้งการใช้หน่วยความจำและปริมาณงานลำดับต่อบล็อก; การเพิ่ม r เพิ่มต้นทุนหน่วยความจำควบคู่กับ N p คือแฟกเตอร์การขนาน รัน scrypt อิสระ p ครั้ง ซึ่งเพิ่มต้นทุน CPU โดยไม่เพิ่มการใช้หน่วยความจำต่ออินสแตนซ์
แฮชที่สร้างขึ้นมีรูปแบบใด?
สตริงที่อธิบายตัวเอง $scrypt$ln=<log2 N>,r=<r>,p=<p>$<base64 salt>$<base64 key> มันฝังทุกพารามิเตอร์ ดังนั้นโหมดตรวจสอบจึงต้องการเพียงสตริงนั้นและรหัสผ่าน การคำนวณทั้งหมดเป็นแบบภายในเครื่อง — ไม่มีการอัปโหลด

เครื่องมือเพิ่มเติม