|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
[C#]Generatore di Password
Sto cercando di fare un generatore di password in C# ed ecco che ho pensato:
Codice:
// // //Generatore di password (Console version) 0.1 Alpha // // using System; using System.Random; // La classe contenente il generatore public class PasGen { public PasGen() { Console.WriteLine("\t\t -- Benvenuto nel generatore di password! -- \n"); Console.WriteLine("Inserisci di quanti caratteri vuoi la password:\n"); int quant= Console.ReadLine(); } // L'array delle vocali public string[] vocali= new string[4]; vocali[0]= "a"; vocali[1]= "e"; vocali[2]= "i"; vocali[3]= "o"; vocali[4]= "u"; // L'array delle consonanti public string[] consonanti= new string[20]; consonanti[0]= "b"; consonanti[1]= "c"; consonanti[2]= "d"; consonanti[3]= "f"; consonanti[4]= "g"; consonanti[5]= "h"; consonanti[6]= "l"; consonanti[7]= "m"; consonanti[8]= "n"; consonanti[9]= "p"; consonanti[10]= "q"; consonanti[11]= "r"; consonanti[12]= "s"; consonanti[13]= "t"; consonanti[14]= "v"; consonanti[15]= "z"; consonanti[16]= "$"; consonanti[17]= "w"; consonanti[18]= "x"; consonanti[19]= "y"; consonanti[20]= "@"; // la gunzione che genera la password public void Genera(int quantiCar) { int quanto = quantiCar; int i, y; string pwd; for (i=0;i<quanto;i++) { for (y=0;i<quanto+5;y++) { Random rdm1 = newRandom(unchecked((int)DateTime.Now.Ticks)); Random rdm2 = newRandom(unchecked((int)DateTime.Now.Ticks)); Random rdm3 = newRandom(unchecked((int)DateTime.Now.Ticks)); Random rdm3 = newRandom(unchecked((int)DateTime.Now.Ticks)); pwd = consonanti[y]+ vocali[rdm1] +vocali[rdm2]+ vocali[rdm3]+consonanti[y]; } return pwd; } Console.WriteLine("Ecco la password:{0}\n", pwd); } } public class Print:PasGen { public static void Main(){ PasGen gen = new PasGen(); gen.Genera(quant); } } |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
Ma ci vedo storto io o il codice che c'è nell'immagine è diverso da quello te postato????
![]() quello da te postato c'è vocali[0]="a"; quello nell'immagine (se non ci vedo storto) vocali[[0]]="a"; |
![]() |
![]() |
![]() |
#3 | |
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
Quote:
Che vor di? |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
Due o tre cose... innanzi tutto quando definisci un array tipo new int32[4] gli indici di questo array vanno da 0 a 3 per un totale di 4 elementi...
Prova ad inizializzarlo così: String[] vocali= new String{"a","e","i","o","u"}; Ciaociao Soalle PS: hai pensato ad usare un array di caratteri?? |
![]() |
![]() |
![]() |
#5 |
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
Codice:
// // //Generatore di password (Console version) 0.1 Alpha // // using System; // La classe contenente il generatore public class PasGen { public PasGen() { Console.WriteLine("\t\t -- Benvenuto nel generatore di password! -- \n"); Console.WriteLine("Inserisci di quanti caratteri vuoi la password:\n"); this.Genera(); } // L'array delle vocali public String[] vocali= new String[]{"a","e","i","o","u"}; // L'array delle consonanti public String[] consonanti= new String[]{"b","e","d","f","g", "h", "l", "m", "n", "p", "q", "r", "s", "t", "v", "z", "w", "x", "$", "@"}; // la gunzione che genera la password public void Genera(int quantiCar) { int quanto = quantiCar; int i, y; string pwd; for (i=0;i<quanto;i++) { for (y=0;i<quanto+5;y++) { pwd = consonanti[y]+ vocali[i] +vocali[i]+ vocali[i]+consonanti[y]; public string password= pwd; } } } Console.WriteLine("Ecco la password:{0}\n", password); } } public class Print:PasGen { public static void Main(){ PasGen gen = new PasGen(); int prova_prima= 10; gen.Genera(prova_prima); } } |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
se fai la cortesia di postare l'errore....
![]() ![]() |
![]() |
![]() |
![]() |
#7 |
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
Codice:
// // //Generatore di password (Console version) 0.1 Alpha // // using System; // La classe contenente il generatore public class PasGen { public PasGen(int quanto) { this.Genera(quanto); } // L'array delle vocali public String[] vocali= new String[]{"a","e","i","o","u"}; // L'array delle consonanti public String[] consonanti= new String[]{"b","e","d","f","g", "h", "l", "m", "n", "p", "q", "r", "s", "t", "v", "z", "w", "x", "$", "@"}; // la gunzione che genera la password public void Genera(int quantiCar) { int i, y; string pwd; for (i=0;i<quantiCar;i++) { for (y=0;i<quantiCar+5;y++) { pwd = consonanti[y] + vocali[i] + vocali[i ]+ vocali[i] + consonanti[y]; public string password = pwd; } } return password; Console.WriteLine("Ecco la password:{0}\n", password); } } public class Print { public static void Main(){ Console.WriteLine("\t\t -- Benvenuto nel generatore di password! -- \n"); Console.WriteLine("Inserisci di quanti caratteri vuoi la password:\n"); PasGen gen = new PasGen(); int prova_prima= 10; gen.Genera(prova_prima); } } [/quote] |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
Cerca di strutturare meglio il programma in termini di classi... perché la classe Print deve ereditare da PasGen? Comunque l'errore è probabile che sia nel costruttore di PasGen che richiama Genera senza passargli alcun parametro...
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
oppss hai cambiato il codice mentre rispondevo....
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
o levi la chiamata al metodo genera nel costruttore oppure quando crei l'oggetto gli passi effettivamente un numero e poi (poiché è il costruttore che si occpua di chiamare Genera) eviti di chiamare Genera....
|
![]() |
![]() |
![]() |
#11 |
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
quindi cosi
Codice:
public PasGen(int quanto) { this.Genera(quanto); } |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
nooooooo!!! perché dalla classe print richiami:
PasGen gen=new PasGen() ma non esiste nessun costruttore di PasGen senza parametri!!! quindi nella chiamata al costruttore effettuata nella classe print gli passi un intero (e dopo eviti di chiamare Genera perché lo chiama già il costruttore): PasGen gen=new PasGen(10); Oppure togli la chiamata a Genera dal costruttore di PasGen e gli levi anche il parametro intero che deve ricevere e poi dopo richiami tu la funzione Genera PasGen gen=new PasGen(); gen.Genera(10); Peccato che con questo secondo metodo il costruttore perde di significato allora lo levi e poi, poiché non ha senso neppure un metodo di istanza, fai il metodo genera statico... |
![]() |
![]() |
![]() |
#13 |
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
con questo:
Codice:
// // //Generatore di password (Console version) 0.1 Alpha // // using System; // La classe contenente il generatore public class PasGen { public PasGen(int quanto) { this.Genera(quanto); } // L'array delle vocali public String[] vocali= new String[]{"a","e","i","o","u"}; // L'array delle consonanti public String[] consonanti= new String[]{"b","e","d","f","g", "h", "l", "m", "n", "p", "q", "r", "s", "t", "v", "z", "w", "x", "$", "@"}; // la gunzione che genera la password public void Genera(int quantiCar) { int i, y; string pwd; for (i=0;i<quantiCar;i++) { for (y=0;i<quantiCar+5-1;y++) { pwd = consonanti[y] + vocali[i] + vocali[i ]+ vocali[i] + consonanti[y]; public string password = pwd; } } return password; Console.WriteLine("Ecco la password:{0}\n", password); } } public class Print:PasGen { public static void Main(){ Console.WriteLine("\t\t -- Benvenuto nel generatore di password! -- \n"); Console.WriteLine("Inserisci di quanti caratteri vuoi la password:\n"); int prova_prima= 10; PasGen gen = new PasGen(prova_prima); } } Ma dove azzo sono? |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
ma lo sai quello cha stai facendo nell'algoritmo???
![]() nel for metti una variabile che è valida solo nel blocco del for e NON deve avere la keywork "public"; togliendo quella rimane un problema: la variabile password oltre che essere inutile è valida come dicevo prima solo nello scope del for quindi quando esci dal for password non esiste più e return password naturalmente dda dei problemi. Ma c'è un altro errore la tua funzione l'hai dichiarata come ua procedura che non restituisce niente ("void Genera....") quindi non ha neppure senso il return. Inoltre perché continui a fare derivare Print da PasGen che è concettualmente sbagliato??? Infine con un parametro errato il tuo programmino genererà un'eccezione che poiché non è stata colta farà scoppiare tutto il tuo computer.... Se chiamo PasGen(100) lui nel for prima o poi inizierà ad andare a prendere delle stringhe nell'array passando degli indici al di fuori della lunghezza dell'array-> ArrayOutOfBoundException o qualcosa del genere... PS: Ero sotto linux e ho provato a compilare con mono ![]() |
![]() |
![]() |
![]() |
#15 |
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
Prova a compilare questo e dirmi che ti dice:
Codice:
using System; // La classe contenente il generatore public class PasGen { public string pwd; public PasGen(int quanto) { this.Genera(quanto); } // L'array delle vocali public String[] vocali= new String[]{"a","e","i","o","u"}; // L'array delle consonanti public String[] consonanti= new String[]{"b","e","d","f","g", "h", "l", "m", "n", "p", "q", "r", "s", "t", "v", "z", "w", "x", "$", "@"}; // la gunzione che genera la password public string Genera(int quantiCar) { int i, y; double min= 1; int max=29; for (i=0;i<quantiCar*System.Math.Round(min,max);i++) { for (y=0;i<quantiCar*System.Math.Round(min, max);y++) { pwd = consonanti[y] + vocali[i] + vocali[i ]+ vocali[i] + consonanti[y]; } } return pwd; } } public class Print { public static void Main(){ Console.WriteLine("\t\t -- Benvenuto nel generatore di password! -- \n"); Console.WriteLine("Inserisci la percentuale di complessita che vuoi nella password:\n"); int prova_prima= 10; PasGen gen = new PasGen(prova_prima); string password; password = gen.pwd; System.Console.WriteLine("Ecco la password:{0}\n", password); } } |
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
Sono forse il tuo paggio...
![]() Il problema è quello che ti ho spiegato prima... ma a quanto pare non ci senti.... ![]() vocali è un array lungo 5. ci accedi con un for i cui indici vanno da 0 a quantiCar*(sbrodaglia); quanticar=10 la sbrodaglia=1 quindi tu accedi nell'array con indici fino a 9 -> Exception... Ti conviene prima guardarti un po' di programmazione di base... |
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
Che maestro paziente...
![]() |
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Nov 2000
Messaggi: 279
|
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
__________________
In un arco di tempo abbastanza lungo l'indice di sopravvivenza di ognuno scende a zero |
![]() |
![]() |
![]() |
#19 | |
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
Quote:
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:35.