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.