I was going through this article to understand more about Java Serialization process. When it comes to uses of readObject/writeObject
I could see two use cases:
I thing decrypting can better be done by using an ObjectOutputStream based on an CipherOutputsStream.
The most important use of writeObject/readObject is if you want to keep Serialization stable over multiple code revisions. Your internal representation (member variables) may change but serialization has to be stable as there are old system you communicate with (e.g. by reading old data from files).
But I prefer the Externalizable interface for these cases as it is easier to use (no implicit calls and methods which only the jvm knows about).