UTILS.
100% w przeglądarce
🧂

Generator i weryfikator hashy KDF scrypt

Wyprowadź klucz scrypt z hasła z konfigurowalnym kosztem N, r, p lub zweryfikuj hasło względem przechowywanego ciągu scrypt. Działa w pełni w Twojej przeglądarce.

Hasła są haszowane w 100% w Twojej przeglądarce — nic nie jest przesyłane.

— wynik pojawi się tutaj —

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.

Najczęściej zadawane pytania

Dlaczego N musi być potęgą dwójki?
Krok ROMix scrypt indeksuje tablicę dokładnie N bloków i polega na tym, że N jest potęgą dwójki, dla swojego adresowania integerify-and-mask. Narzędzie odrzuca wartości niebędące potęgą dwójki. Typowe wybory to 16384 (2^14) do użytku interaktywnego i 1048576 (2^20) do szyfrowania plików.
Ile pamięci używa scrypt?
Mniej więcej 128 · N · r bajtów. Przy domyślnych N=16384, r=8 to około 16 MiB. Ponieważ przeglądarka faktycznie to alokuje, duże wartości N lub r mogą być wolne lub zawieść na urządzeniach z małą ilością RAM — narzędzie ostrzega powyżej 256 MiB.
Co kontrolują r i p?
r to rozmiar bloku, który skaluje zarówno użycie pamięci, jak i ilość pracy sekwencyjnej na blok; zwiększanie r podnosi koszt pamięci wraz z N. p to współczynnik zrównoleglenia, uruchamiający p niezależnych obliczeń scrypt, co podnosi koszt CPU bez podnoszenia śladu pamięci na instancję.
Jaki format ma wygenerowany hash?
Samoopisujący się ciąg $scrypt$ln=<log2 N>,r=<r>,p=<p>$<sól base64>$<klucz base64>. Osadza każdy parametr, więc tryb weryfikacji potrzebuje tylko tego ciągu i hasła. Całe obliczenia są lokalne — nic nie jest przesyłane.

Więcej narzędzi