开源项目之Android Secrets(密码箱)

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的API
public 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<Secret> 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);
	}
	@Override
	public int onStartCommand(Intent intent, int flags, final int startId) { // 关键操作
		synchronized (SaveService.class) {
			final List<Secret> 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() {
					@Override
					public 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;
	}


介绍完毕,项目下载!



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值