Como criar um gerador de senhas aleatórias em JavaScript

Como criar um gerador de senhas aleatórias em JavaScript

Baixar arquivos

Senhas fortes são essenciais para proteger suas contas online contra intrusos. Uma maneira eficaz de criar senhas fortes é usar um gerador de senha aleatório.

Neste artigo você vai aprender como criar um gerador de senha aleatório usando a linguagem JavaScript. vamos começar! 

Definindo os caracteres possíveis

Para criar senhas aleatórias, primeiro, você precisa definir os caracteres a serem usados. Pode conter letras maiúsculas, letras minúsculas, números e caracteres especiais. Você pode criar uma string contendo todos esses caracteres, mas para fazer reuso desse código vou criar um objeto genérico com o nome de "_password" e dentro criar uma propriedade com o nome "characters" que também será um objeto, contento os caracteres separadamente para podermos selecionar quais caracteres irão compor a senha.

const _password = {
    characters: {
        numbers: '0123456789',
        lowercase: 'abcdefghijklmnopqrstuvwxyz',
        uppercase: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
        special: '?/~^{}[]!@#$%&*()_-+=.,:;'
    }
}
Copiar

Vamos definir também uma propriedade "value" para armazenar o valor da senha criada e uma propriedade "length" para definir a quantidade de caracteres que foi ou será senha usado para gerar a senha.

const _password = {
    value: '',
    length: 15,
    characters: {
        numbers: '0123456789',
        lowercase: 'abcdefghijklmnopqrstuvwxyz',
        uppercase: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
        special: '?/~^{}[]!@#$%&*()_-+=.,:;'
    }
}
Copiar

Criando um método gerador de senhas

Agora, vamos criar um método "generate" que será responsável por gerar a senha aleatória. Esse método teŕa um parâmetro "chars" para definir quais caracteres serão usados para gerar a senha. O objeto "_password" completo ficará assim:

const _password = {
    value: '',
    length: 15,
    characters: {
        numbers: '0123456789',
        lowercase: 'abcdefghijklmnopqrstuvwxyz',
        uppercase: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
        special: '?/~^{}[]!@#$%&*()_-+=.,:;'
    },
    generate(chars) {
        let pwd = '';
        this.length = this.length < 5 || this.length > 50 ? 15 : this.length;
        chars = chars || Object.values(this.characters).join();
        for (let i = 0; i < this.length; i++) {
            pwd += chars[Math.floor(Math.random() * chars.length)];
        }
        this.value = pwd;
        return pwd;
    }
}
Copiar

Exemplo de uso do método "gerenate":

_password.generate(_password.characters.numbers + _password.characters.lowercase)
Copiar

Agora podemos usar a imaginação e criar uma aplicação com inputs do tipo "checkbox" para selecionar quais carateres usar na geração da senha. Também podemos colocar input "range" para definir a quantidade de caracteres que serão usados.

Assista o vídeo e entenda como criar esta aplicação.