java 序列化 加密_java – 可序列化对象的ArrayList的加密保存和解密加载

我使用这两种方法在sd卡中保存并加载包含可序列化对象的ArrayList的文件

保存方法

public static void saveUserList(ArrayList userList) {

if (storageAvailable()) {

try {

createFolder();

FileOutputStream userList = new FileOutputStream(

baseDir + File.separator + baseAppDir + File.separator

+ fileName);

ObjectOutputStream oos = new ObjectOutputStream(

userList);

oos.writeObject(userList);

oos.close();

} catch (Exception exc) {

exc.printStackTrace();

}

}

}

加载方法

public static ArrayList loadUserList() {

if (storageAvailable()) {

ArrayList userList = new ArrayList();

try {

FileInputStream userList = new FileInputStream(baseDir

+ File.separator + baseAppDir + File.separator

+ fileName);

ObjectInputStream oos = new ObjectInputStream(

userList);

userList = (ArrayList) oos.readObject();

oos.close();

} catch (Exception exc) {

exc.printStackTrace();

}

return userList;

} else {

return null;

}

}

现在我希望saveUserList方法在保存期间根据特定的String关键字加密文件的内容,方法loadUserList使用相同的关键字解密文件以返回arrayList.

我怎么能这样做?

我已经看了CipherOutputStream但是我还没有理解我应该如何使用它.

该方法建议使用Conceal库

public static void saveUserListCrypted(ArrayList userList) {

if (storageAvailable()) {

try {

createFolder();

Crypto crypto = new Crypto(

new SharedPrefsBackedKeyChain(context),

new SystemNativeCryptoLibrary());

FileOutputStream userList = new FileOutputStream(

baseDir + File.separator + baseAppDir + File.separator

+ fileName);

OutputStream cryptedStream = crypto.getCipherOutputStream(

userList, new Entity("UserList");

ObjectOutputStream oos = new ObjectOutputStream(

cryptedStream);

oos.writeObject(userList);

oos.close();

} catch (Exception exc) {

exc.printStackTrace();

}

}

}

导致此错误

this error java.lang.UnsupportedOperationException 02-12 21:29:05.026 2051-2051/com.myapp W/System.err﹕ at com.facebook.crypto.streams.NativeGCMCipherOutputStream.write

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值