在 iOS 应用程序开发过程中,我们经常会存储一些比较重要的信息。如涉及到用户系统的 App, 我们就需要考虑自动登录的功能,如果把用户的用户名和密码存储在 NSUserDefault 中很不安全。第一,该信息是明文存储的;第二,可以通过一些工具获取到 NSUserDefault 中的信息。容易造成泄露用户的账号信息。
出于安全方面的考虑,Apple 为我们提供了一个叫 KeyChain 的工具, 存储在里面的信息不能说绝对安全,但是相对于 NSUserDefault 或者其它一些存储在 App 沙盒中的信息,其要安全很多。第一,KeyChain 的存储位置位于 /private/var/Keychains/... ,如果我们要直接访问里面的信息,必须要先越狱之后才能访问;第二,KeyChain 的关键信息都是经过加密处理的,所以就算获取到之后也还需要做破解工作。
网上有很多关于 KeyChain 的访问组件,Apple 也提供了相应的 Demo。但是,感觉不怎么实用,操作起来相对麻烦。所以决定自己对其重新进行封装,所以就有了这个 KIKeyChain 这个组件。
#import "ViewController.h"
#import "KIKeyChain.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
KIKeyChain *key = [KIKeyChain keyChainWithIdentifier:@"default_user"];
[key setValue:@"user1" forKey:@"username"];
[key setValue:@"password1" forKey:@"password"];
[key write];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
KIKeyChain *key = [KIKeyChain keyChainWithIdentifier:@"default_user"];
NSLog(@"%@==%@", [key valueForKey:@"username"], [key valueForKey:@"password"]);
}
@end