PDA

View Full Version : [JAVA] java.io, salvataggio e ripristino di oggetti che contengono password


luxorl
03-03-2006, 16:24
Ciao :)
il mio problema è il seguente,
ho creato l'oggetto Giocatore, questo oggetto contiene tre variabili:

-String ID
-String Password
-int Saldo

la classe Giocatore implementa Serializable, e ho dichiarato transient la Password.
Ora il mio obiettivo è creare un insieme di Giocatori, quindi mi sono creato la classe ListaGiocatori che basandosi su un HashSet di java.util crea e gestisce l'aggiunta e la rimozione di giocatori.

Vorrei ora far in modo di savare su un file questa lista ogni volta che chiudo il mio programma, però senza rendere la password leggibile sul file.

Ho quindi creato un metodo salva nella classe ListaGiocatori che aiutandosi con un Iteratore sul hashSet salva gli oggetti contenuti nel set attraverso un FileOutputStream e un ObjectOutputStream. ecco il codice...


public void salva() throws IOException{
TreeSet elencoOrdinato=new TreeSet<Giocatore>(elenco);
FileOutputStream f=new FileOutputStream("Elenco.txt");
Iterator it=elencoOrdinato.iterator();
ObjectOutputStream os=new ObjectOutputStream(f);
while(it.hasNext()){
os.writeObject(it.next());
}
os.flush();
os.close();
}


fin qui sembra tutto ok.. i problemi li ho in fase di ripristino..
come strutturare il metodo ripristina per far si che dal file riottengo il Set di Giocatori con le loro password?

usando FileInputStream e ObjectInputStream? ma come faccio a distinguere gli oggetti salvati? per poi aggiungerli al Set? (che poi farò ritornare al metodo)

Spero di essere stato chiaro.. anche se non credo proprio :stordita:

in ogni caso grazie :mano: a chi mi darà una mano!

^TiGeRShArK^
03-03-2006, 19:17
ehm... non ho capito bene cosa vuoi fare..
se dichiari la password transient NON verrà salvata sul file, quindi non vedo come potresti riottenerla semplicemente leggendo il file... :mbe:

luxorl
03-03-2006, 21:28
ehm... non ho capito bene cosa vuoi fare..
se dichiari la password transient NON verrà salvata sul file, quindi non vedo come potresti riottenerla semplicemente leggendo il file... :mbe:

Ah, io avevo capito che dichiarando transient faceva una specia di criptaggio della stringa...
Quindi che metodo potrei utilizzare per salvare e ripristinare utenti con password? senza che la password sia leggibile sul file? costruisco un mio metodo: cripta? e poi salvo la stringa criptata? e poi quando ripristino la faccio decriptare? ...altri possibili approcci?

^TiGeRShArK^
04-03-2006, 15:38
la soluzione migliore è usare gli algoritmi di crittografia presenti in java....
solo ke penso ke non sia ks banale.. io personalmente non li ho mai utilizzati, ma se non sbaglio kingv era piuttosto ferrato in questo campo.....
prova a vedere se questo link ti serve a qualcosa...
http://java.sun.com/products/jce/index-14.html