0
我要加密類型EnteredDetails的ArrayList(的Java bean),並將其序列化到file.I我下面這個鏈接,AES-128位加密:http://www.code2learn.com/2011/06/encryption-and-decryption-of-data-using.html鑑於最終塊未正確填充
使用的方法aes類的加密必須將arrarylist轉換爲字節數組,使用方法encrypt將其加密並使用fileoutputstream將其寫入文件。
現在在反序列化方法中,我使用fileinputstream讀取加密的字節數組,使用解密方法解密字節數組,並使用objectinputstream從解密的字節數組中取回我的數組列表。
這是我的Serialize方法:
public void serialize() {
try {
ByteArrayOutputStream b = new ByteArrayOutputStream();
ObjectOutputStream o = new ObjectOutputStream(b);
o.writeObject(ar5.userDetails);
AES_Encryption en = new AES_Encryption();
byte[] data=en.encrypt(b.toByteArray());
FileOutputStream fos = new FileOutputStream("user.txt");
fos.write(data);
b.close();
fos.close();
o.close();
} catch (Exception e) {
e.printStackTrace();
}
}
編輯Deserialize方法:
ArrayList<EnteredDetails> load() {
try {
File file=new File("user.txt");
FileInputStream fis = new FileInputStream("user.txt");
// System.out.println("after fisssssss");
// ObjectInputStream ois = new ObjectInputStream(fis);
// byte [] d =(byte []) ois.readObject();
byte fileContent[] = new byte[(int)file.length()];
AES_Encryption enc = new AES_Encryption();
byte[] data = enc.decrypt(fileContent);
ByteArrayInputStream b = new ByteArrayInputStream(data);
ObjectInputStream ois2 = new ObjectInputStream(b);
ArrayList<EnteredDetails> al = (ArrayList<EnteredDetails>) ois2.readObject();
fis.close();
b.close();
ois2.close();
return al;
} catch (Exception e) {
System.out.println("exception in method load deseialize class " + e.getMessage());
return null;
}
}
錯誤:由於最後一個塊未正確填充
我編輯了desrialize方法,但現在它給出了錯誤 鑑於最終塊沒有正確填充 – sugam
你應該關閉你的流,當你完成它們。 –
我已經關閉它們,但錯誤仍然存在。 – sugam