Gerador de senhas flexível com Javascript


Hoje em dia é comum vermos cada site com regras bem diferentes pra a criação de senhas, e boa parte deles são opção de gerar automaticamente as senhas. Então, eis aqui uma sugestão de como criar, com Javascript, um gerador de senhas flexível o bastante para se adaptar às regras de cada site.

A ideia é que possamos definir grupos de caracteres, e para cada grupo, o número mínimo de caracteres requeridos para nossas senhas. Também podemos definir o tamanho da senha a ser gerada. Se a soma das quantidades mínimas para cada grupo de caractere não for menor que o tamanho da senha, novos caracteres, dentre os dos grupos, serão adicionados para completá-la:

function generatePassword(length, rules) {
    if (!length || length == undefined) {
        // default length
        length = 8;
    }

    if (!rules || rules == undefined) {
        // default rules
        rules = [
            {chars: "abcdefghijklmnopqrstuvwxyz", min: 3},
            {chars: "ABCDEFGHIJKLMNOPQRSTUVWXYZ", min: 2},
            {chars: "0123456789", min: 2},
            {chars: "!@#$&*?|%+-_./:;=()[]{}", min: 1}
        ];
    }

    var allChars = "", allMin = 0;
    rules.forEach(function(rule) {
        allChars += rule.chars;
        allMin += rule.min;
    });
    if (length < allMin) {
        length = allMin;
    }
    rules.push({chars: allChars, min: length - allMin});
    
    var pswd = "";
    rules.forEach(function(rule) {
        if (rule.min > 0) {
            pswd += shuffleString(rule.chars, rule.min);
        }
    });
    
    return shuffleString(pswd);
}

Veja que utilizamos uma função para embaralhar os caracteres do string. Precisamos criá-la também:

function shuffleString(str, maxlength) {
    var shuffledString = str.split('').sort(function(){return 0.5-Math.random()}).join('');
    if (maxlength > 0) {
        shuffledString = shuffledString.substr(0, maxlength);
    }
    return shuffledString;
}

Agora vamos testar nossa função, adicionando nossas próprias regras. Para cada grupo de caracteres, podemos definir o número mínimo requerido em nossa senha. Se desejarmos, podemos simplesmente excluir um desses grupos, caso, por exemplo, não queiramos que se use caracteres especiais nas senhas, ou podemos excluir e acrescentar apenas alguns caracteres nos grupos, ou mesmo criar novos grupos:

var rules = [
  {chars: "abcdefghijklmnopqrstuvwxyz", min: 4},
  {chars: "ABCDEFGHIJKLMNOPQRSTUVWXYZ", min: 1},
  {chars: "0123456789", min: 3},
  {chars: "!@#$&*", min: 2}
];
var pswd = generatePassword(15, rules);

alert(pswd);

Temos agora uma função bastante flexível para se adaptar as regras de senha de cada caso.

Qual o navegador mais rápido?


O Peacekeeper é uma ferramenta online para verificação e comparação de desempenho de browsers. Funciona de forma bastante simples, você entra no site e clica em ‘Benchmark Your Browser’. Se não tiver java instalado, ele vai pedir para instalar. Depois é só mandar rodar e esperar uns 5 minutos, no máximo. Ele vai medir o desempenho do browser que você está usando e irá fornecer um link para você usar com outros browsers e fazer o comparativo.

Eu fiz a experiência, e eis o resultado:

Ler maisQual o navegador mais rápido?

O início…


Olá,

Finalmente tomei coragem para criar meu blog, pois pesquisando aqui e ali na web para resolver problemas de programação, linux, e outros, me dei conta que as vezes acabo procurando a mesma coisa mais de uma vez. Foi quando pensei que seria uma boa idéia pôr todas essas informações que as vezes custo a encontrar tudo num só lugar, tanto pra facilitar minha própria vida quando precisar delas de novo, quanto para compartilhar com aqueles que procuram essas mesmas informações.

Quem quiser entrar em contato, é só mandar um email para contatoARROBAjaimenetoPONTOcom.

Abraços!