116 votes

Générer une chaîne de mots de passe aléatoire avec des exigences en javascript

Je veux générer une chaîne aléatoire qui doit comporter 5 lettres de a à z et 3 chiffres.

Comment puis-je faire cela avec JavaScript ?

J'ai le script suivant, mais il ne répond pas à mes exigences.

        var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
        var string_length = 8;
        var randomstring = '';
        for (var i=0; i<string_length; i++) {
            var rnum = Math.floor(Math.random() * chars.length);
            randomstring += chars.substring(rnum,rnum+1);
        }

7 votes

S'il répond à votre exigence, quelle est la question alors ? En outre, votre exigence de mot de passe forcé est une mauvaise idée.

8 votes

4 votes

new Array(12).fill().map(() => String.fromCharCode(Math.random()*86+40)).join("") Une solution astucieuse pour produire un mot de passe de 12 caractères avec des caractères spéciaux, des chiffres supérieurs et inférieurs, dans une approche très légère.

3voto

Daksh Miglani Points 1820

Je ne recommanderais pas l'utilisation d'un mot de passe forcé, car il restreint la sécurité de l'utilisateur, mais quoi qu'il en soit, il y a plusieurs façons de procéder

Méthode traditionnelle JavaScript -

Math.random().toString(36).slice(-8);

Utilisation d'une chaîne aléatoire

Installer une chaîne aléatoire :

npm install randomstring

L'utiliser dans App.js -

var randStr = require('randomstring');

var yourString = randStr.generate(8);

La valeur de votre mot de passe est conservée dans la variable yourString .

N'utilisez pas un mot de passe forcé !

Le mot de passe forcé peut nuire à votre sécurité, car tous les mots de passe seraient soumis au même jeu de caractères, ce qui pourrait facilement être violé !

0 votes

Force != Enforce laissant un utilisateur entrer 123456 Dans un système sécurisé, il est en fait nécessaire de générer un mot de passe basé sur une condition requise par la validation Sans une génération conditionnelle, le code pourrait créer des mots de passe invalides, c'est-à-dire >= 8 caractères, au moins 1 majuscule et 1 minuscule et un chiffre ou un caractère spécial. S'assurer que les utilisateurs ont des mots de passe forts n'est pas restreindre la sécurité de l'utilisateur

3voto

Rubinous Points 126

Ma vision du problème basée sur les crypto-monnaies. J'utilise ES6 et je ne vérifie pas les fonctionnalités du navigateur. Des commentaires sur la sécurité ou les performances ?

const generatePassword = (
  passwordLength = 12,
  passwordChars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',
) =>
  [...window.crypto.getRandomValues(new Uint32Array(passwordLength))]
    .map(x => passwordChars[x % passwordChars.length])
    .join('');

0 votes

Cela fonctionne très bien. Elle est plus lisible que la plupart des autres fonctions, ce que je préfère.

2voto

Kimon Moutsakis Points 443
var letters = ['a','b','c','d','e','f','g','h','i','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];
    var numbers = [0,1,2,3,4,5,6,7,8,9];
    var randomstring = '';

        for(var i=0;i<5;i++){
            var rlet = Math.floor(Math.random()*letters.length);
            randomstring += letters[rlet];
        }
        for(var i=0;i<3;i++){
            var rnum = Math.floor(Math.random()*numbers.length);
            randomstring += numbers[rnum];
        }
     alert(randomstring);

1voto

socketpair Points 469

Et enfin, sans avoir recours à des bidouillages en virgule flottante :

function genpasswd(n) {
    // 36 ** 11 > Number.MAX_SAFE_INTEGER
    if (n > 10)
        throw new Error('Too big n for this function');
    var x = "0000000000" + Math.floor(Number.MAX_SAFE_INTEGER * Math.random()).toString(36);
    return x.slice(-n);
}

1voto

Dusty Points 336

Mot de passe sécurisé avec un caractère majuscule.

let once = false;

    let newPassword = Math.random().toString(36).substr(2, 8).split('').map((char) => {
                    if(!Number(char) && !once){
                        once = true;
                        return char.toUpperCase();
                    }
                    return char;
                }).join('');

    console.log(newPassword)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X