Sto provando a serializzare un oggetto Message usando ObjectOutputStream, prendere l'output byte [] del serializzatore, crittografarlo usando uno strumento di crittografia e quindi provare a decalervarlo e lanciarlo come oggetto. Fornisce un errore - intestazione del flusso non valida. Non è possibile modificare OutputStream dopo la serializzazione e quindi deserializzarlo? Scusami se sto facendo qualcosa di atroce, sono un novizio di Java. Codice per serializzatore - serialMsg ():
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bos);
out.writeObject(this);
bytes = bos.toByteArray();
out.close();
L'output del serializzatore viene quindi utilizzato come di seguito:
byte[] data = this.serialMsg(); // This is where I serialize the Message object
byte[] out = util.Encrypt(data, fromsk , to.toString(), param); // This is where I encrypt the byte[ ] - data and obtain an encrypted byte [ ] - out
L'oggetto viene quindi de-serializzato come:
ByteArrayInputStream in = new ByteArrayInputStream(out);
ObjectInputStream objin = new ObjectInputStream(in) ;
msg = (Message)objin.readObject(); // This is where I cast the output of readObject into the type Message - the original type of the object that was serialized.
Spero che l'obiettivo dietro questo sia chiaro. Sto provando a modificare il flusso di output e poi provando a reinserirlo nel tipo originale.