开源项目之Android(安卓)Secrets(密码箱)
16lz
2021-01-26
Secrets是为Android系统提供一个强大的密码保护箱,只要将各种密码放到箱子里即可,密码箱提供了导入导出的备份功能!项目如图:
效果如图:
关键源码简单分析:
public class CSVReader {//csv 读取类
public class CSVWriter { //csv写入类
密码箱操作的文件格式是csv public class FileUtils { // csv文件操作 创建、打开、还原、备份、删除、分析、加载……等操作
public class Flip3dAnimation extends Animation { // 3D换页效果 动画
public class OS { // 操作系统 比如:public static boolean isAndroid30() { // 是否支持Android 3.0的APIpublic static void hideSoftKeyboard(Context ctx, View view) { // 隐藏软键盘public static void invalidateOptionsMenu(Activity activity) { // 无效的选项菜单public static void configureSearchView(Activity activity, Menu menu) { // 搜索public static boolean supportsScrollWheel() { // 设备是否支持滚轮或轨迹球
enum PasswordStrength { // 密码强度枚举
public class BCrypt { // 加密类 实现OpenBSD风格
public class SecurityUtils {//管理加密密钥加密和解密数据
public class Secret implements Serializable { // 封装密码
public class SaveService extends Service { // 保存服务 关键服务 方法如下:
public static synchronized void execute(Context context,List secrets, Cipher cipher, byte[] salt, int rounds) { //后台队列保存密钥SaveService.secrets = secrets;SaveService.cipher = cipher;SaveService.salt = salt;SaveService.rounds = rounds;Intent intent = new Intent(context, SaveService.class);context.startService(intent);}
@Overridepublic int onStartCommand(Intent intent, int flags, final int startId) { // 关键操作synchronized (SaveService.class) {final List secrets = SaveService.secrets;final Cipher cipher = SaveService.cipher;final File file = getFileStreamPath(FileUtils.SECRETS_FILE_NAME);final byte[] salt = SaveService.salt;final int rounds = SaveService.rounds;SaveService.secrets = null;SaveService.cipher = null;SaveService.salt = null;SaveService.rounds = 0;if (null != secrets && null != cipher) {new Thread(new Runnable() {@Overridepublic void run() {int r = FileUtils.saveSecrets(SaveService.this, file,cipher, salt, rounds, secrets);// 保存成功否则刷新if (0 == r)backupManager.dataChanged();// 不存在则备份if (!FileUtils.restoreFileExist())FileUtils.backupSecrets(SaveService.this, cipher,salt, rounds, secrets);stopSelf(startId);}}, "saveSecrets").start();} else {stopSelf(startId);}}return START_STICKY;}
更多相关文章
- Android_RxJava入门高级全攻略
- [转发]Android(安卓)系统稳定性 - ANR(三)
- Android(安卓)launchMode
- Android面试题整理(二)
- Android(安卓)Studio NDK&Jni开发--MD5加密
- android常用的电话操作
- Android之对Wifi的操作
- Android(安卓)TabHost设置setCurrentTab(index),当index!=0时,默认加
- 软件安装:android studio安装以及操作手册