Se vuoi proteggere un oggetto Java devi usare SealedObject classe.
Di seguito è riportato un codice di esempio.
Utilizzo di AES-128 bit e scrittura in un file come oggetto sigillato.
try {
//Generate a key
KeyGenerator gen = KeyGenerator.getInstance("AES");
gen.init(128);
Key sKey = gen.generateKey();
Cipher c = Cipher.getInstance("AES");
c.init(Cipher.ENCRYPT_MODE,sKey);
// do the sealing
Car car=new Car("My car ",2014);
SealedObject so = new SealedObject(car,c);
FileOutputStream out = new FileOutputStream("Objects.obj");
ObjectOutputStream oOut = new ObjectOutputStream(out);
//Save the key
oOut.writeObject(sKey);
//Save the sealed object
oOut.writeObject(so);
oOut.close();
System.out.println("SealedObject was written to Object file");
} catch (Exception e) {
System.out.println(e);
}
}
La decrittazione è la seguente. Legge l'oggetto sigillato e decrittografa usando la stessa chiave.
try {
FileInputStream in = new FileInputStream("Objects.obj");
ObjectInputStream oIn = new ObjectInputStream(in);
//Read the key
Key sKey= (Key) oIn.readObject();
//Read the sealed object
SealedObject so= (SealedObject) oIn.readObject();
//unsealded the object
Car car = (Car) so.getObject(sKey);
car.getNo();
car.getYear();
} catch (Exception e) {
System.out.println(e);
}
Assicurare la chiave simmetrica è molto importante qui, ma è fuori tema.
AES (256) è lo standard moderno ed è stato utilizzato negli Stati Uniti federali e altre organizzazioni. AES ha crittografia 128,192 e 256 bit. DES è considerato come "Vecchio" e ha molte vulnerabilità . Il successore di DES è 3DES. 3DES mitiga molte vulnerabilità riscontrate nel DES. Ma è considerato lento quando si tratta di implementazioni software, perché applica il DES in 3 volte.
Quindi usa sempre AES quando sei in dubbio.