什么是Keychain?
iOS设备中的Keychain是一个安全的存储容器,可以用来为不同应用保存敏感信息比如用户名,密码,网络密码,认证令牌。苹果自己用keychain来保存Wi-Fi网络密码,VPN凭证等等。保存用户隐私数据,最好使用Keychain,以免沙盒被破解或越狱带来的用户数据被窃取。之前把微博的app卸载,发现重装后还能自动登录,估计微博用的就是Keychain保存。
Keychain 的特点
- 它是一个sqlite数据库,保存的所有数据都是加密过的。
- keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储。相对于NSUserDefaults、文件保存等一般方式,keychain保存更为安全,而且keychain里保存的信息不会因App被删除而丢失,所以在重装App后,keychain里的数据还能使用。
- 虽然keychain也容易被破解,不过比NSUserDefaults和plist安全得多,只要我们注意不要在keychain中保存明文密码就会在很大程度上提升安全性。
Keychain 的使用
这里主要使用SFHFKeychainUtils进行存取,使用方法很简单。
SFHFKeychainUtils
1、引入Security.frameWork框架。
2、引入头文件:SFHKeychainUtils.h.
+ (NSString *) getPasswordForUsername: (NSString *) username andServiceName: (NSString *) serviceName error: (NSError **) error;
+ (BOOL) storeUsername: (NSString *) username andPassword: (NSString *) password forServiceName: (NSString *) serviceName updateExisting: (BOOL) updateExisting error: (NSError **) error;
+ (BOOL) deleteItemForUsername: (NSString *) username andServiceName: (NSString *) serviceName error: (NSError **) error;
+ (BOOL) purgeItemsForServiceName:(NSString *) serviceName error: (NSError **) error;
使用以上四个类方法进行存取,通过bool值判断存取是否成功。










网友评论