请尝试(添加适当的检查并尝试省略的块以使代码更具可读性)这样的保存
public static void AESObjectEnprer(Serializable object, String password, String path) { try { Cipher cipher = null; cipher = Cipher.getInstance("AES/CBC/PKCS7Padding"); cipher.init(Cipher.ENCRYPT_MODE, fromStringToAESkey(password)); SealedObject sealedObject = null; sealedObject = new SealedObject(object, cipher); CipherOutputStream cipherOutputStream = null; cipherOutputStream = new CipherOutputStream(new BufferedOutputStream(new FileOutputStream(path)), cipher); ObjectOutputStream outputStream = null; outputStream = new ObjectOutputStream(cipherOutputStream); outputStream.writeObject(sealedObject); outputStream.close(); }这要加载
public static Serializable AESObjectDedprer(String password, String path) { Cipher cipher = null; Serializable userList = null; cipher = Cipher.getInstance("AES/CBC/PKCS7Pdding"); //Code to write your object to file cipher.init(Cipher.DECRYPT_MODE, fromStringToAESkey(password)); CipherInputStream cipherInputStream = null; cipherInputStream = new CipherInputStream(new BufferedInputStream(new FileInputStream(path)), cipher); ObjectInputStream inputStream = null; inputStream = new ObjectInputStream(cipherInputStream); SealedObject sealedObject = null; sealedObject = (SealedObject) inputStream.readObject(); userList = (Serializable) sealedObject.getObject(ciper); return userList; }SecretKey从字符串创建一个,您可以使用此
public static SecretKey fromStringToAESkey(String s) { //256bit key need 32 byte byte[] rawKey = new byte[32]; // if you don't specify the encoding you might get weird results byte[] keyBytes = new byte[0]; try { keyBytes = s.getBytes("ASCII"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } System.arraycopy(keyBytes, 0, rawKey, 0, keyBytes.length); SecretKey key = new SecretKeySpec(rawKey, "AES"); return key; }注意:
此代码两次加密和解密,以显示密封对象和密码流的使用方式



