Rogério Lino

Web development and tips

Javascript: Password Generator

Hoje me deparei com o fato de ter que alterar a senha do FTP, e há algum tempo queria fazer um gerador de senhas.

Então não teve momento mais oportuno, com um simples script que transforma um números aleatórios em char e pronto. Está resulvido o meu problema.

var Password = function() {
    this.pass = "";
    this.generate = function(chars) {
        for (var i= 0; i<chars; i++) {
            this.pass += this.getRandomChar();
        }
        return this.pass;
    }

    this.getRandomChar = function() {
        /*
         * matriz contendo em cada linha indices (inicial e final) da tabela ASCII para retornar alguns caracteres.
         *  [48, 57] = numeros;
         *  [64, 90] = "@" mais letras maiusculas;
         *  [97, 122] = letras minusculas;
         */
        var ascii = [[48, 57],[64,90],[97,122]];
        var i = Math.floor(Math.random()*ascii.length);
        return String.fromCharCode(Math.floor(Math.random()*(ascii[i][1]-ascii[i][0]))+ascii[i][0]);
    }
}

O que tem de novo nesse script em relação ao conteúdo do blog está na funcão getRandomChar. Primeiro temos um vetor bidimensional (matriz) que guardamos em cada linha dois valores (duas colunas).

Guardamos esses dois valores porque estamos utilizando a tabela ASCII para converter número em caracter. Portanto para não termos caracteres do tipo “*”, “.”, “;” (etc) em nossa senha, temos que delimitar quais caracteres podem ser gerados. Logo o primeiro valor guarda a primeiro caracter que pode ser exibido e o segundo o último, e entre eles todos podem ser exibidos.

E para converter o valor no tão “pelejado” caracter utilizamos a função própria do Javascript da classe String ( String.fromCharCode() ), que obviamente é passado um inteiro como parâmetro e retornado um char.

Enfim o script é capaz de gerar senhas de tamanho 0 até 9999 (restringido devido que senhas muito grandes são mais demoradas para serem geradas, e pode levar a travamento do browser) contendo letras minúsculas (a até z), letras maiúsculas (A até Z), números (0 até 9) e “@” (arroba).

Password Generator

Espero que seja de bom aproveito.

Comments