UTILS.
%100 tarayıcıda
🧂

scrypt KDF Hash Oluşturucu ve Doğrulayıcı

Bir paroladan yapılandırılabilir N, r, p maliyetiyle bir scrypt anahtarı türetin veya bir parolayı saklanan bir scrypt dizesine karşı doğrulayın. Tamamen tarayıcınızda çalışır.

Parolalar %100 tarayıcınızda hash'lenir — hiçbir şey yüklenmez.

— çıktı burada görünür —

Bu araç hakkında

scrypt KDF Hash Oluşturucu ve Doğrulayıcı, scrypt çıktılarını tarayıcınızda yerel olarak türetir ve kontrol eder. Colin Percival tarafından tasarlanan ve RFC 7914'te standartlaştırılan scrypt, bellek zorlu bir anahtar türetme fonksiyonudur: maliyeti kasıtlı olarak bellek bant genişliğine hâkimdir, böylece özel kırma donanımı çok az avantaj kazanır. Boru hattı, parolayı genişletmek için PBKDF2-HMAC-SHA256, büyük sıralı bellek kullanımını zorlamak için BlockMix ve Salsa20/8 çekirdeği üzerine kurulu ROMix fonksiyonu ve seçtiğiniz uzunlukta türetilmiş anahtarı üretmek için son bir PBKDF2-HMAC-SHA256'dır.

Oluşturma modu, crypto.getRandomValues'dan 16 rastgele salt baytı okur ve scrypt'i üç maliyet parametresiyle çalıştırır: N, CPU/bellek maliyetidir ve ikinin kuvveti olmalıdır (varsayılan 16384 = 2^14), r blok boyutudur (varsayılan 8) ve p paralelleştirme faktörüdür (varsayılan 1). Bellek kullanımı kabaca 128 · N · r bayttır — varsayılanlarda yaklaşık 16 MiB — ve ayarlarınız 256 MiB'yi aşacaksa araç uyarır. Çıktı, ln = log2(N) olan kendini tanımlayan bir dizedir: $scrypt$ln=14,r=8,p=1$<base64 salt>$<base64 key>, böylece doğrulamak için gereken her parametre hash'le taşınır.

Doğrulama modu, ln, r, p, salt'ı ve saklanan anahtarı o dizeden ayrıştırır, türetilmiş anahtarı aday parolayla yeniden hesaplar ve eşleşme ya da eşleşmeme bildirmek için sabit zamanlı bir karşılaştırma yapar. scrypt çekirdeği, tarayıcının katı güvenlik politikası altında eval'sız bir WebAssembly derlemesi olarak çalışır, böylece parolalar %100 tarayıcınızda işlenir ve hiçbir şey yüklenmez.

Sık sorulan sorular

N neden ikinin kuvveti olmalı?
scrypt'in ROMix adımı tam olarak N bloktan oluşan bir tabloyu indeksler ve integerify-and-mask adreslemesi için N'nin ikinin kuvveti olmasına dayanır. Araç, ikinin kuvveti olmayan değerleri reddeder. Tipik seçimler etkileşimli kullanım için 16384 (2^14) ve dosya şifreleme için 1048576 (2^20)'dir.
scrypt ne kadar bellek kullanır?
Kabaca 128 · N · r bayt. Varsayılan N=16384, r=8'de bu yaklaşık 16 MiB'dir. Tarayıcı bunu gerçekten tahsis ettiğinden, büyük N veya r değerleri düşük RAM'li cihazlarda yavaş olabilir veya başarısız olabilir — araç 256 MiB üzerinde uyarır.
r ve p neyi kontrol eder?
r blok boyutudur; hem bellek kullanımını hem de blok başına sıralı iş miktarını ölçekler; r'yi artırmak bellek maliyetini N ile birlikte yükseltir. p paralelleştirme faktörüdür; p bağımsız scrypt hesaplaması çalıştırır, bu da örnek başına bellek ayak izini yükseltmeden CPU maliyetini yükseltir.
Oluşturulan hash hangi biçimde?
Kendini tanımlayan bir dize $scrypt$ln=<log2 N>,r=<r>,p=<p>$<base64 salt>$<base64 key>. Her parametreyi gömer, böylece doğrulama modu yalnızca o dizeye ve parolaya ihtiyaç duyar. Tüm hesaplama yereldir — hiçbir şey yüklenmez.

Daha fazla araç