您的位置:首页 > 移动开发 > Android开发

android SharedPreferences加密(高级) (AES+base64+PBE)

2015-12-27 16:17 549 查看

1.前言

转载请注明出处

http://blog.csdn.net/wangguoyang429883793/article/details/50412802

(AES+base64+PBE)高级加密,先看下效果。

加密前:



加密后:



2.代码

1.先简单看下代码使用,后面会详细解释,给demo。

public class MyApplication extends Application {

public static MyApplication instance;
private SharedPreferences securePrefs1000;

public MyApplication() {
super();
instance = this;
}

public static MyApplication get() {
return instance;
}

public SharedPreferences getSharedPrefs() {
if (securePrefs1000 == null) {
securePrefs1000 = new SecurePreferences(this, "wgy", "pref-file");//获取加密的SharedPreferences
}
return securePrefs1000;
}

}


securePrefs1000 = new SecurePreferences(this, "wgy", "pref-file");这个方法获取加密的SharedPreferences:
①第一个参数是contex,注意这里应该是app得contex不是activity的context。
②第二个参数是用于加密的密码。
③最后一个参数是文件名。


调用:

private void cacheSecure(){
MyApplication.get().getSharedPrefs().edit().putString("test","wgy123").apply();//和正常的SharedPreferences的使用方法没有区别。
}


加密原理:

标准的SharedPreferences的键值对存储在一个简单的xml中。在root后的手机可以在shared_prefs文件夹中查找。SecurePreferences实现了android得接口,机制也是相同的,但是这些键值会被用AES对称秘钥加密起来。加密后的文件在存储之前,还会进行base64编码。

在SecurePreferences第一次实例化时,会产生一个AES加密秘钥,存起来。

但是这样并不安全。所以(基于口令的加密)PBE是一个完美的解决方案。在android中叫做android-keystore。所以这种加密是我目前了解到得最高级别的加密。

3.总结

demo地址:https://github.com/wgy429883793/SecurePreferences.git

加密的东西都在一个文件夹中,我测试的环境是android5.1.1,有问题请给我留言。

参考自:android security cookbook

欢迎批评,吐槽,点赞,留言。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息