da Berga95 » dom gen 09, 2011 7:09 pm
Anche il tipo dei caratteri digitati...
Guarda il source...
- Codice: Seleziona tutto
// Calculations per second. Ten million is roughly the number a decent PC could manage uninhibited
var calculationsPerSecond = 10000000;
// Keep track of how many character sets are used
var possibleCharacters = 0;
// Lowercase
if (password.match(/[a-z]/)) { possibleCharacters += 26; }
// Uppercase
if (password.match(/[A-Z]/)) { possibleCharacters += 26; }
// Numbers
if (password.match(/\d+/)) { possibleCharacters += 10; }
// Symbols
if (password.match(/[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/) ) {possibleCharacters += 13};
[cut]
// Work out the number of possible combinations: possible characters to the power of the password length
var possibleCombinations = Math.pow(possibleCharacters, password.length);
// Divide the number of possible combinations by the calculations a PC can do per second
var computerTimeInSecs = possibleCombinations / calculationsPerSecond;
Da come si può intuire anche per chi non ha fondamenti di programmazione java, le combinazioni (possibleCombinations) sono uguali a possibleCharacters elevato alla lunghezza della password.
Un esempio: la password "pippo" rientra nei "LowerCase" (lettere minuscole), quindi 26 diventa la variabile possibleCombinations.
Per calcolare tutte le combinazioni che si possono avere con 26 caratteri diversi con 5 lettere si eleva 26^5 -> numero combinazioni
La password "Pippo" farebbe aumentare il numero dei caratteri possibili a 0+26+26 -> 52, quindi 52^5, che è diverso da 26^5...
Quindi, i parametri usati per trovare la durata (n° possibilità/calcoli per secondo) sono di più che il semplice controllo della lunghezza o il confronto con un array di password comuni
Non è morto ciò che in eterno può attendere - e col passare di strani eoni - anche la morte può morire.
~ H.P. Lovecraft