Comment générer un mot de passe aléatoire?


Bonjour le monde

J'ai besoin de générer un mot de passe aléatoire qui sera utilisé dans OpenPGP.js pour crypter quelque chose de manière symétrique. L'utilisateur ne devrait jamais avoir à toucher ou voir le mot de passe (tout se passe dans les coulisses). Ainsi, idéalement, le mot de passe ne serait qu'un nombre d'octets aléatoires. Malheureusement, OpenPGP.js ne prend pas en charge cela (à ma connaissance). Il ne prend en charge que les chaînes comme mots de passe.

J'ai donc besoin de générer une chaîne de mot de passe aléatoire. Je veux que ce soit aussi aléatoire que possible; en excluant le moins de caractères possible.

Comment puis-je générer une chaîne de mot de passe aléatoire sécurisée?

J'ai actuellement ceci:

String.fromCharCode.apply(null, crypto.getRandomValues(new Uint8Array(32)));

Cependant, je crains un peu que cela puisse gâcher les paires de substitution UTF-16 lorsque certains octets aléatoires apparaissent, et que le mot de passe puisse être interprété différemment sur d'autres navigateurs en fonction de leur implémentation Unicode.

Cette solution est-elle sûre à utiliser sur tous les navigateurs?

Bonjour le monde

Pour répondre à ma propre question:

Une partie de mon système crypte et déchiffre les mots de passe (comme celui aléatoire dans la question). Lors du test de ma solution avec OpenPGP.js, la chaîne renvoyée par l'opération de décryptage (après le cryptage) de manière aléatoire ne correspond pas complètement à la chaîne d'origine (peut-être une sur dix).

Cela suggère qu'OpenPGP.js ne sérialise pas ou ne désérialise pas correctement UTF-8 (ou quel que soit le codage qu'il utilise) lorsque son entrée est incorrecte. J'imagine que les chaînes que je produis ne sont pas Unicode invalides - du moins dans Chrome.

Je travaille quand je définis un jeu de caractères connu limité, évidemment.

Pour résumer:

String.fromCharCode.apply(null, crypto.getRandomValues(new Uint8Array(32)));

n'est pas sûr à utiliser.

Articles connexes


Comment générer un mot de passe aléatoire en python

Vinay Kumar Shukla Je veux utiliser python3pour générer un mot de passe aléatoire pour crypter mes fichiers, le mot de passe aléatoire créé doit avoir la restriction suivante La longueur minimale doit être de 12 Doit contenir une lettre majuscule. Doit conteni

Générer un mot de passe aléatoire en php

nunos J'essaye de générer un mot de passe aléatoire en php. Cependant, j'obtiens tous les 'a's et le type de retour est de type array et je voudrais que ce soit une chaîne. Des idées sur la façon de corriger le code? Merci. function randomPassword() { $alp