Me pregunto qué tan seguro es este generador de contraseñas de JavaScript:
var Password = {
_pattern : /[a-zA-Z0-9_\-\+\.\!\@\#\$\%\^\&\*\(\)\_\+\{\}\:\"\<\>\?\|\[\]\;\'\,\.\/\'\~\']/,
_getRandomByte : function()
{
if(window.crypto && window.crypto.getRandomValues)
{
var result = new Uint8Array(1);
window.crypto.getRandomValues(result);
return result[0];
}
else if(window.msCrypto && window.msCrypto.getRandomValues)
{
var result = new Uint8Array(1);
window.msCrypto.getRandomValues(result);
return result[0];
}
else
{
return Math.floor(Math.random() * 256);
}
},
generate : function(length)
{
return Array.apply(null, {'length': length})
.map(function()
{
var result;
while(true)
{
result = String.fromCharCode(this._getRandomByte());
if(this._pattern.test(result))
{
return result;
}
}
}, this)
.join('');
}
};
Además, si alguien tiene alguna sugerencia para hacerlo mejor o más seguro, de nada.
Una cosa más, la longitud de la contraseña generada es fija value="16"
, tal vez eso puede ser una mala idea y no sería mejor generar una contraseña con una longitud aleatoria, por ejemplo. entre 12 - 16, o algo más.