O tym narzędziu
Generator i weryfikator hashy KDF scrypt wyprowadza i sprawdza wyniki scrypt lokalnie w Twojej przeglądarce. scrypt, zaprojektowany przez Colina Percivala i ustandaryzowany w RFC 7914, to memory-hard funkcja wyprowadzania klucza: jej koszt jest celowo zdominowany przez przepustowość pamięci, tak aby dedykowany sprzęt do łamania zyskiwał niewiele przewagi. Potok to PBKDF2-HMAC-SHA256 do rozwinięcia hasła, funkcja ROMix zbudowana na BlockMix i rdzeń Salsa20/8 do wymuszenia dużego sekwencyjnego użycia pamięci oraz końcowy PBKDF2-HMAC-SHA256 do wytworzenia wyprowadzonego klucza o wybranej długości.
Tryb generowania odczytuje 16 losowych bajtów soli z crypto.getRandomValues i uruchamia scrypt z trzema parametrami kosztu: N to koszt CPU/pamięci i musi być potęgą dwójki (domyślnie 16384 = 2^14), r to rozmiar bloku (domyślnie 8), a p to współczynnik zrównoleglenia (domyślnie 1). Użycie pamięci to mniej więcej 128 · N · r bajtów — około 16 MiB przy domyślnych ustawieniach — a narzędzie ostrzega, gdy Twoje ustawienia przekroczyłyby 256 MiB. Wynikiem jest samoopisujący się ciąg $scrypt$ln=14,r=8,p=1$<sól base64>$<klucz base64>, gdzie ln = log2(N), więc każdy parametr potrzebny do weryfikacji jest niesiony z hashem.
Tryb weryfikacji parsuje ln, r, p, sól i przechowywany klucz z tego ciągu, przelicza wyprowadzony klucz z kandydackim hasłem i wykonuje porównanie w stałym czasie, aby zgłosić zgodność lub jej brak. Rdzeń scrypt działa jako pozbawiona eval kompilacja WebAssembly pod ścisłą polityką bezpieczeństwa przeglądarki, więc hasła są przetwarzane w 100% w Twojej przeglądarce i nic nie jest przesyłane.