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

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

2013-06-17 21:30 85 查看
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;
	}


介绍完毕,项目下载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: