PDA

View Full Version : Java e salvataggio chiave simmetrica su file


roby1483
02-05-2005, 19:12
Salve a tutti, era un pò che non mi vedevate da queste parti.
Vengo subito al problema, ho un'applicazione che deve codificare/decodificare dei dati sensibili da inserire in un database. Ho scelto di usare l'AES come algoritmo e le classi presenti nel package javax.crypto. Riesco tranquillamente a generale la chiave e a cifrare e decifrare i dati ma il problema è che ovviamente ad ogni esecuzione viene generata una nuova chiave quindi i dati codificati in precedenza sono illeggibili. Per ovviare al problema avevo pensato di crearmi una classe che facesse tutte le operazioni e serializzarla su disco (compresa la chiave generata) così da poterla sempre recuparare, ma il problema è che anche se la mia classe implementa l'interfaccia serializable tutte le classi che stanno dentro javax.crypto non la implementano quindi non posso serializzare la chiave e i vari cipher.
Avete qualche suggerimento per risolvere il problema?

Grazie a tutti ;)

end.is.forever
02-05-2005, 23:08
Salve a tutti, era un pò che non mi vedevate da queste parti.
Vengo subito al problema, ho un'applicazione che deve codificare/decodificare dei dati sensibili da inserire in un database. Ho scelto di usare l'AES come algoritmo e le classi presenti nel package javax.crypto. Riesco tranquillamente a generale la chiave e a cifrare e decifrare i dati ma il problema è che ovviamente ad ogni esecuzione viene generata una nuova chiave quindi i dati codificati in precedenza sono illeggibili. Per ovviare al problema avevo pensato di crearmi una classe che facesse tutte le operazioni e serializzarla su disco (compresa la chiave generata) così da poterla sempre recuparare, ma il problema è che anche se la mia classe implementa l'interfaccia serializable tutte le classi che stanno dentro javax.crypto non la implementano quindi non posso serializzare la chiave e i vari cipher.
Avete qualche suggerimento per risolvere il problema?

Grazie a tutti ;)

Come no, tutti i tipi di chiave sono serializzabili!
Se non vuoi usare la serializzazione c'è anche il metodo getEncoded di Key

roby1483
03-05-2005, 07:41
Si è vero, siccome volevo serializzare l'intero mio oggetto che comprendeva anche i cipher mi dava eccezione su quelli.
Usando il metodo getEncoded come faccio poi dall'array di byte che mi restituisce a ricrearmi un oggetto Key?
Grazie ;)

kingv
03-05-2005, 08:00
Usando il metodo getEncoded come faccio poi dall'array di byte che mi restituisce a ricrearmi un oggetto Key?


SecretKey key = new SecretKeySpec(bytearray, "AES");

roby1483
03-05-2005, 08:25
Grazie mille a tutti e due!