UTILS.
100 % im Browser
🧂

scrypt-KDF-Hash-Generator & -Verifizierer

Leite einen scrypt-Schlüssel aus einem Passwort mit konfigurierbaren Kosten N, r, p ab, oder verifiziere ein Passwort gegen eine gespeicherte scrypt-Zeichenkette. Läuft vollständig in deinem Browser.

Passwörter werden zu 100 % in deinem Browser gehasht — nichts wird hochgeladen.

— Ausgabe erscheint hier —

Über dieses Tool

Der scrypt-KDF-Hash-Generator & -Verifizierer leitet scrypt-Ausgaben lokal in deinem Browser ab und prüft sie. scrypt, entworfen von Colin Percival und standardisiert in RFC 7914, ist eine speicherharte Schlüsselableitungsfunktion: Ihre Kosten werden bewusst von der Speicherbandbreite bestimmt, sodass spezialisierte Cracking-Hardware kaum Vorteile gewinnt. Die Pipeline besteht aus PBKDF2-HMAC-SHA256 zum Expandieren des Passworts, der ROMix-Funktion, die auf BlockMix und dem Salsa20/8-Kern aufbaut, um große sequentielle Speichernutzung zu erzwingen, und einem finalen PBKDF2-HMAC-SHA256, um den abgeleiteten Schlüssel deiner gewählten Länge zu erzeugen.

Der Generierungsmodus liest 16 zufällige Salt-Bytes aus crypto.getRandomValues und führt scrypt mit drei Kostenparametern aus: N ist die CPU-/Speicherkosten und muss eine Zweierpotenz sein (Standard 16384 = 2^14), r ist die Blockgröße (Standard 8) und p ist der Parallelisierungsfaktor (Standard 1). Die Speichernutzung beträgt grob 128 · N · r Bytes — etwa 16 MiB bei den Standardwerten —, und das Tool warnt, wenn deine Einstellungen 256 MiB überschreiten würden. Die Ausgabe ist eine selbstbeschreibende Zeichenkette $scrypt$ln=14,r=8,p=1$<base64 salt>$<base64 key>, wobei ln = log2(N), sodass jeder zur Verifizierung nötige Parameter mit dem Hash getragen wird.

Der Verifizierungsmodus liest ln, r, p, das Salt und den gespeicherten Schlüssel aus dieser Zeichenkette, berechnet den abgeleiteten Schlüssel mit dem Kandidatenpasswort neu und führt einen konstantzeitigen Vergleich durch, um Übereinstimmung oder Nichtübereinstimmung zu melden. Der scrypt-Kern läuft als eval-freier WebAssembly-Build unter der strengen Sicherheitsrichtlinie des Browsers, sodass Passwörter zu 100 % in deinem Browser verarbeitet werden und nichts hochgeladen wird.

Häufig gestellte Fragen

Warum muss N eine Zweierpotenz sein?
Der ROMix-Schritt von scrypt indiziert eine Tabelle von genau N Blöcken und setzt darauf, dass N eine Zweierpotenz ist, für seine Integerify-und-Mask-Adressierung. Das Tool weist Werte zurück, die keine Zweierpotenz sind. Typische Wahlen sind 16384 (2^14) für interaktive Nutzung und 1048576 (2^20) für Dateiverschlüsselung.
Wie viel Speicher verwendet scrypt?
Grob 128 · N · r Bytes. Bei den Standardwerten N=16384, r=8 sind das etwa 16 MiB. Da der Browser diesen tatsächlich zuweist, können große N- oder r-Werte auf Geräten mit wenig RAM langsam sein oder fehlschlagen — das Tool warnt oberhalb von 256 MiB.
Was steuern r und p?
r ist die Blockgröße, die sowohl die Speichernutzung als auch den Umfang der sequentiellen Arbeit pro Block skaliert; ein Erhöhen von r steigert die Speicherkosten neben N. p ist der Parallelisierungsfaktor, der p unabhängige scrypt-Berechnungen ausführt, was die CPU-Kosten erhöht, ohne den Speicherbedarf pro Instanz zu erhöhen.
Welches Format hat der erzeugte Hash?
Eine selbstbeschreibende Zeichenkette $scrypt$ln=<log2 N>,r=<r>,p=<p>$<base64 salt>$<base64 key>. Sie bettet jeden Parameter ein, sodass der Verifizierungsmodus nur diese Zeichenkette und das Passwort braucht. Die gesamte Berechnung ist lokal — nichts wird hochgeladen.

Weitere Tools