Prima di tutto, consiglio vivamente di leggere un po 'sulla serializzazione Java. Questo articolo è un po 'datato ma copre l'essenziale.
In particolare, questo bit è importante:
2. Serialization is not secure
It often comes as an unpleasant surprise to Java developers that the
Serialization binary format is fully documented and entirely
reversible. In fact, just dumping the contents of the binary
serialized stream to the console is sufficient to figure out what the
class looks like and contains.
Questo significa che la serializzazione predefinita non può essere invocata per offuscare o proteggere il contenuto degli oggetti.
Tuttavia esiste un modo che può essere in grado di raggiungere ciò di cui hai bisogno. Puoi scrivere metodi di serializzazione personalizzati sulla classe che viene serializzata in cui puoi trasformare i dati come desideri. Tieni presente che nella migliore delle ipotesi puoi sperare di offuscare o rallentare qualcuno dalla lettura dei dati.
public class MyClass implements Serializable {
private String secret;
...
private void writeObject(ObjectOutputStream out) throws IOException {
out.writeObject(encrypt(secret));
}
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
ename = decrypt(in.readUTF());
}
private String encrypt(String plaintext) {
return ...;
}
private String decrypt(String ciphertext) {
return ...;
}
}