Générer un mot de passe sécurisé en javascript

Quel est le moyen le plus rapide de générer un mot de passe sécurisé dans javascript?

Je veux qu'il contienne au moins 1 caractère spécial et 2 cas mélangés. Doit avoir au moins 6 caractères.

Voici quelques fonctions de String utiles:

 String.prototype.pick = function(min, max) { var n, chars = ''; if (typeof max === 'undefined') { n = min; } else { n = min + Math.floor(Math.random() * (max - min + 1)); } for (var i = 0; i < n; i++) { chars += this.charAt(Math.floor(Math.random() * this.length)); } return chars; }; // Credit to @Christoph: http://stackoverflow.com/a/962890/464744 String.prototype.shuffle = function() { var array = this.split(''); var tmp, current, top = array.length; if (top) while (--top) { current = Math.floor(Math.random() * (top + 1)); tmp = array[current]; array[current] = array[top]; array[top] = tmp; } return array.join(''); }; 

Votre mot de passe ressemblerait à ceci:

 var specials = '!@#$%^&*()_+{}:"<>?\|[];\',./`~'; var lowercase = 'abcdefghijklmnopqrstuvwxyz'; var uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; var numbers = '0123456789'; var all = specials + lowercase + uppercase + numbers; var password = ''; password += specials.pick(1); password += lowercase.pick(1); password += uppercase.pick(1); password += all.pick(3, 10); password = password.shuffle(); 

Demo: http://jsfiddle.net/Blender/ERCsD/6/

Je viens d'obtenir la publication maintenant. C'est une mauvaise idée d'utiliser Math.random () si vous pouvez passer quelques minutes à regarder cet article .

En fait, il existe une API crypto sur les navigateurs les plus récents et vous devez l'utiliser dès que vous commencez quelque chose de touchant la cryptographie.

C'est pourquoi je recommande d'utiliser la bibliothèque Jen qui utilise la célèbre API crypto. Il fonctionne à la fois côté serveur et client (nodejs et navigateurs).

Mk-