Ci sono molti modi per generare dinamicamente delle password alfanumeriche e per altri linguaggi di programmazione (php, .NET, etc..) si trovano numerosi esempi in rete. Trovare in rete soluzioni funzionanti e facilmente adattabili alle proprie necessità in Actionscript 2 non è facile.
Vi propongo una soluzione abbastanza flessibile, il codice presentato è un adattatamento di una funzione PHP trovata su melbournechapter.net.
Andremo a creare due funzioni: una per ottenere dei numeri random interi e una per generare la password era e propria.
La funzione ci permetterà di definire degli array di caratteri da utilizzare per generare la password e di impostare un valore numerico per definire la complessità della generazione.
/**
* Funzione che genera una password basata su set di caratteri personalizzabili
*
* String generaPassword(length, level);
* Impostare un livello alto per utilizzare più gruppi di caratteri
* 1 = solo lettere minuscole
* 2 = solo lettere maiuscole e minuscole
* 3 = stringa alfanumerica
* 4 = stringa alfanumerica con caratteri speciali
*
* @param length Number lunghezza della password
* @param level Number Imposta quali set di caratterei utilizzare
* @return String Nuova password con complessità definita dai parametri impostati
* @author Matteo Ronchi adattata dalla funzione php di: Cameron Manderson
*/
function generaPassword( length:Number , level:Number ):String {
// definiamo i gruppi di caratteri da utilizzare
var characterSets:Array = new Array();
characterSets.push( 'abcdefghijklmnopqrstuvwxyz' );
characterSets.push( 'ABCDEFGHIJKLMNOPQSRTUVWXYZ' );
characterSets.push( '01234567890' );
characterSets.push( '!@#$^*()_' );
// verifichiamo che il livello di complessità rientri nei limiti
if(level > characterSets.length) level = characterSets.length;
else if(level < 1) level = 1;
// generiamo la password
var password:String = '';
for(var i:Number = 0; i < length; i++) {
var xPointer:Number = randRange( 0, 10000 ) % level;
var yPointer:Number = randRange( 0, 10000 ) % characterSets[xPointer].length;
// aggiungiamo un'altro carattere alla password
password += characterSets[xPointer].substr( yPointer, 1 );
}
// restituiamo il valore della password generata
return password;
}
/*
* funzione per generare numeri interi casuali entro un intervallo definito
*/
function randRange(min:Number, max:Number):Number {
var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
return randomNum;
}







