Accede a todo EDteam con un único pago¡Sube a premium!

Andrés Forero@sigh

Los argumentos spec (caracteres especiales), upp (mayusculas) y num (numeros) estan desactivados por defecto (0), cuando se llama la funcion con otro valor se agregan al string.

Sobre el buffer: El abecedario tiene 26 caracteres, la letra 'a' tiene el codigo ascii 97, por lo que hago un bucle que empiece en 0 y termine en 26 y en cada posicion del string le sumo i+97 (donde empieza 'a')

97+0 -> 97 (a)

97+1 -> 98 (b)

99+1 -> 100 (d)

Y por ultimo utilizo el metodo toString('ascii') para que sean caracteres.

1const gen_password = (size=8, spec=0, upp=0, num=0) => { 2 const alph = Buffer.alloc(26); 3 for(let i=0; i<26; i++){ 4 alph[i] = i+97; 5 } 6 let char = alph.toString('ascii'); 7 8 if(!upp == 0) char+= char.toUpperCase(); 9 if(!spec == 0) char+= `!@#$%^&*()-_=+`; 10 if(!num == 0) char+= '1234567890'; 11 12 let password = ''; 13 for(let i=0; i<size; i++) { 14 password+= char[Math.trunc(Math.random()*char.length)]; 15 } 16 return password; 17} 18 19console.log(gen_password(12, 1, 1, 1));

Escribe una respuesta

Pregunta a ChatEDT