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
欢迎批评,吐槽,点赞,留言。
相关文章推荐
- SharedPreferences
- 第五章--SharedPreferences的简单用法
- 数据存储之SharedPreferences
- Android复习之数据存储-SharedPreferences
- android实现数据的MD5加密并用SharedPreferences存储
- Android 存储首选项SharedPreferences
- Android开发 SharedPreferences读取不到最新数据..
- 学Android--SharedPreferences
- SpTool -> Android系统SharedPreferences进行的封装
- 实用工具类
- SharedPreferences 简单应用
- SharePreference存储数据
- Android填坑之旅(第十一篇)AndroidStudio中SharedPreferences存储,当key为空的时候引发的血案,导致value存储出现拿取不到的问题
- SharedPreferences 保存零散数据 用户名密码
- SharedPreference 工具类
- 不要滥用SharedPreference
- android保存键值对数据
- Android SharedPreference 源码分析(一)
- Android重温-SharedPreferences的简单实现-存储-读取
- 使用SharedPreferences保存和读取数据