iOS开源加密相册Agony的实现(一)

简介

虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制。本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目)、WiFi传图、照片文件加密等功能。目前项目和文章会同时前进,项目的源代码可以在github上下载。
点击前往GitHub

概述

本文主要介绍加密相册的登录验证与注册模块的实现。注册时只需要密码,每个密码对应一个独立的存储空间,登录时通过Touch ID或密码验证。如果有多套密码,Touch ID会被绑定到一个主密码上(可更改)。

账户数据存储设计

账户类设计

由于加密相册只用于本地,当前设计还未考虑密码找回,因此账户只需要密码这一字段即可,为了统计当前已有账户数量,再使用一个id字段,账户类SGAccount设计如下。

@interface SGAccount : NSObject <NSSecureCoding>

@property (nonatomic, assign) NSInteger accountId;
@property (nonatomic, copy) NSString *password;

@end

为了进行归档存储,需要实现NSCoding的相关方法,如下。

#import "SGAccount.h"

NSString * const kSGAccountId = @"kSGAccountId";
NSString * const kSGAccountPwd = @"kSGAccountPwd";

@implementation SGAccount

- (void)encodeWithCoder:(NSCoder *)encoder {
    [encoder encodeInteger:self.accountId forKey:kSGAccountId];
    [encoder encodeObject:self.password forKey:kSGAccountPwd];
}

- (instancetype)initWithCoder:(NSCoder *)decoder {
    if (self = [super init]) {
        self.accountId = [decoder decodeIntegerForKey:kSGAccountId];
        self.password = [decoder decodeObjectForKey:kSGAccountPwd];
    }
    return self;
}

+ (BOOL)supportsSecureCoding {
    return YES;
}

@end

账户集合类设计

对于多个账户,使用一个账户集合类来管理,账户集合类管理所有的账户,由于登录验证时需要查询密码对应的账户是否存在,为了高效查找,应该使用以密码为key的Map,也就是NSDictionary来存储。
除此之外,还需要记录Touch ID对应的密码,综上所述,设计如下。


                
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值