UTILS.
100 % dans le navigateur
🧂

Générateur et vérificateur de hachage KDF scrypt

Dérivez une clé scrypt à partir d'un mot de passe avec un coût N, r, p configurable, ou vérifiez un mot de passe par rapport à une chaîne scrypt stockée. Fonctionne entièrement dans votre navigateur.

Les mots de passe sont hachés à 100 % dans votre navigateur — rien n'est téléversé.

— la sortie apparaît ici —

À propos de cet outil

Le Générateur et vérificateur de hachage KDF scrypt dérive et vérifie les sorties scrypt localement dans votre navigateur. scrypt, conçu par Colin Percival et normalisé dans la RFC 7914, est une fonction de dérivation de clé memory-hard : son coût est délibérément dominé par la bande passante mémoire afin que le matériel de craquage sur mesure ne gagne que peu d'avantage. Le pipeline est PBKDF2-HMAC-SHA256 pour étendre le mot de passe, la fonction ROMix construite sur BlockMix et le cœur Salsa20/8 pour forcer une grande utilisation séquentielle de la mémoire, et un PBKDF2-HMAC-SHA256 final pour produire la clé dérivée de la longueur que vous avez choisie.

Le mode génération lit 16 octets de sel aléatoires depuis crypto.getRandomValues et exécute scrypt avec trois paramètres de coût : N est le coût CPU/mémoire et doit être une puissance de deux (par défaut 16384 = 2^14), r est la taille de bloc (par défaut 8), et p est le facteur de parallélisation (par défaut 1). L'utilisation de la mémoire est d'environ 128 · N · r octets — environ 16 Mio aux valeurs par défaut — et l'outil avertit lorsque vos réglages dépasseraient 256 Mio. La sortie est une chaîne autodescriptive $scrypt$ln=14,r=8,p=1$<sel base64>$<clé base64> où ln = log2(N), de sorte que chaque paramètre nécessaire à la vérification est transporté avec le hachage.

Le mode vérification analyse ln, r, p, le sel et la clé stockée de cette chaîne, recalcule la clé dérivée avec le mot de passe candidat, et effectue une comparaison à temps constant pour signaler correspondance ou non-correspondance. Le cœur scrypt s'exécute comme une build WebAssembly sans eval sous la politique de sécurité stricte du navigateur, donc les mots de passe sont traités à 100 % dans votre navigateur et rien n'est téléversé.

Foire aux questions

Pourquoi N doit-il être une puissance de deux ?
L'étape ROMix de scrypt indexe une table d'exactement N blocs et repose sur le fait que N soit une puissance de deux pour son adressage integerify-et-masque. L'outil rejette les valeurs qui ne sont pas des puissances de deux. Les choix typiques sont 16384 (2^14) pour un usage interactif et 1048576 (2^20) pour le chiffrement de fichiers.
Combien de mémoire scrypt utilise-t-il ?
Environ 128 · N · r octets. Aux valeurs par défaut N=16384, r=8, cela fait environ 16 Mio. Comme le navigateur l'alloue réellement, de grandes valeurs de N ou r peuvent être lentes ou échouer sur des appareils à faible RAM — l'outil avertit au-delà de 256 Mio.
Que contrôlent r et p ?
r est la taille de bloc, qui met à l'échelle à la fois l'utilisation de la mémoire et la quantité de travail séquentiel par bloc ; augmenter r augmente le coût mémoire aux côtés de N. p est le facteur de parallélisation, exécutant p calculs scrypt indépendants, ce qui augmente le coût CPU sans augmenter l'empreinte mémoire par instance.
Quel est le format du hachage généré ?
Une chaîne autodescriptive $scrypt$ln=<log2 N>,r=<r>,p=<p>$<sel base64>$<clé base64>. Elle intègre chaque paramètre, de sorte que le mode vérification n'a besoin que de cette chaîne et du mot de passe. Tout le calcul est local — rien n'est téléversé.

Plus d'outils