Mi chiedo quanto è sicuro questo generatore di password 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('');
}
};
Inoltre, se qualcuno ha suggerito di renderlo migliore o più sicuro, sei il benvenuto.
Un'altra cosa, la lunghezza della password generata è fissata a value="16"
, forse questa può essere una cattiva idea e non sarebbe meglio generare password con una lunghezza casuale, ad es. tra 12 - 16, o qualcos'altro.