keydown, keyup, keypress
HTML
Press any key and get the message here: <span id="state-msg"></span><br />
<input type="text" id="texto"><br />
<span id="contenido"></span>
JavaScript
var msg = document.getElementById('state-msg');
var entropia = 0;
document.body.addEventListener('keyup', function(e)
{
entropia = 0;
numeros = false;
letrasd = false;
letrasu = false;
signos = false;
simbo = false;
texto = document.getElementById('texto').value;
[...texto].forEach(function(entry) {
numeros = numeros || (entry.charCodeAt()>=48) && (entry.charCodeAt()<=57);
letrasd = letrasd || (entry.charCodeAt()>=97) && (entry.charCodeAt()<=122);
letrasu = letrasu || (entry.charCodeAt()>=65) && (entry.charCodeAt()<=90);
signos = signos || (entry.charCodeAt()>=32) && (entry.charCodeAt()<=47);
simbo = simbo || (entry.charCodeAt()>=123) && (entry.charCodeAt()<=255);
// console.log(entry.charCodeAt()+ " "+numeros+ " "+ letrasd+ " "+ letrasu+ " "+signos + " "+simbo);
// entropia = Math.max (entropia,entry.charCodeAt() -32);
});
// console.log(entropia + " " + Math.pow(entropia,texto.length));
if (numeros) entropia = entropia + 10;
if (letrasd) entropia = entropia + 25;
if (letrasu) entropia = entropia + 25;
if (signos) entropia = entropia + 16;
if (simbo) entropia = entropia + 128;
posi = Math.pow(entropia,texto.length)
document.getElementById('contenido').innerHTML="Rango busqueda: " + entropia + " caracteres.<br />Combinaciones: " + posi+ "<br />Intentos online (1k/s): " + enDias(posi/1000)+ "<br />Intentos offline (1G/s): " + enDias(posi/1000000000) + "<br />";
});
function enDias(seconds)
{
salida = "Aproximadamente ";
var numyears = Math.floor(seconds / (86400 * 365));
if (numyears > 1000)
return salida+Math.floor(numyears/1000)+ " milenios."
if (numyears > 100)
return salida+Math.floor(numyears/100)+ " siglos."
if (numyears > 0)
return salida+numyears+ " años."
var numdays = Math.floor(seconds / 86400);
if (numdays > 0)
return salida+numdays+ " dias."
var numhours = Math.floor((seconds % 86400) / 3600);
if (numhours > 0)
...