Si desea asegurar un objeto Java, debe usar SealedObject clase.
El siguiente es un código de ejemplo.
Usar AES-128 bit y escribir en un archivo como un objeto sellado.
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);
}
}
El descifrado es el siguiente. Lee el objeto sellado y descifra usando la misma clave.
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);
}
Asegurar la clave simétrica es muy importante aquí, pero está fuera de tema.
AES (256) es el estándar moderno y se ha utilizado en las organizaciones federales de EE. UU. y otras. AES tiene cifrado de 128,192 y 256 bits. DES se considera "antiguo" y tiene muchas vulnerabilidades . El sucesor de DES es 3DES. 3DES mitiga muchas vulnerabilidades encontradas en DES. Pero se considera lento cuando se trata de implementaciones de software, porque está aplicando el DES en 3 veces.
Por lo tanto, siempre use AES cuando tenga dudas.