IOS的钥匙串,确保本地隐私数据的安全
* 蘋果的"生態圈",鑰匙串訪問,使用 AES 256 加密算法,能夠保證用戶密碼的安全
* 鑰匙串訪問SDK,是蘋果在 `iOS 7.0.3` 版本以后公布的
* 鑰匙串訪問的接口是純 C 語言的,但是,網絡上有框架把它封裝成 OC 的,使用相當簡單!
* 鑰匙串訪問的密碼保存在哪里?
? ? * 只有蘋果知道!是為了進一步保障用戶的密碼安全!
* 鑰匙串訪問的第三方框架,是對 C 框架的封裝。
?
框架地址
https://github.com/soffes/sskeychain
?
#import "SSKeychain.h"
?
?
/**
?*? 從鑰匙串讀取數據? 鑰匙串是由兩個參數確定唯一 值的 服務名? 最好用程序的 bundleId
?*
?*? @param serviceName 存儲 服務名 類似 key 可以隨便寫,建議用 bundleId
?*? @param account ? ? 賬號,用戶名,鑰匙串訪問中,可以保存很多賬號,很多 app 的密碼
?*? @param error ? ? ? 接收錯誤信息
?*
?*? @return 返回從鑰匙串讀取的內容
?*/
?
+ (NSString *)passwordForService:(NSString *)serviceName account:(NSString *)account;
+ (NSString *)passwordForService:(NSString *)serviceName account:(NSString *)account error:(NSError **)error;
?
/**
從鑰匙串中刪除對應 數據 , 返回 是否成功
?*/
+ (BOOL)deletePasswordForService:(NSString *)serviceName account:(NSString *)account;
+ (BOOL)deletePasswordForService:(NSString *)serviceName account:(NSString *)account error:(NSError **)error;
?
?
/**
??? 存儲數據到鑰匙串。? password ?寫`明文`,加密工作蘋果做了,用的是 AES 256 算法
?*/
+ (BOOL)setPassword:(NSString *)password forService:(NSString *)serviceName account:(NSString *)account;
+ (BOOL)setPassword:(NSString *)password forService:(NSString *)serviceName account:(NSString *)account error:(NSError **)error;
?
/**
返回鑰匙串上所有的 account
?*/
+ (NSArray *)allAccounts;
+ (NSArray *)allAccounts:(NSError *__autoreleasing *)error;
?
/**
返回鑰匙串上所有的 serviceName
?*/
+ (NSArray *)accountsForService:(NSString *)serviceName;
+ (NSArray *)accountsForService:(NSString *)serviceName error:(NSError *__autoreleasing *)error;
?
?
例子:將用戶名保存到偏好設置,以 bundleId 和用戶名 將? 密碼保存到鑰匙串
?
#define JYUsernameKey @"JYUsernameKey"
#define JYUserpwdKey @"JYUserpwdKey"
- (void)saveUserInfo {
?? ?
? ? NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
? ? [defaults setObject:self.userName.text forKey:JYUsernameKey];
? ? // 從 iOS 8.0 開始,就不需要同步了
? ? [defaults synchronize];
?? ?
? ? // 以 bundleId 和 用戶名存儲 密碼到鑰匙串
? ? NSString *bundleId = [NSBundle mainBundle].bundleIdentifier;
? ? [SSKeychain setPassword:self.pwd.text forService:bundleId account:self.userName.text];
}
?
- (void)loadUserInfo {
? ? NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
?? ?
? ? self.userName.text = [defaults stringForKey:JYUsernameKey];
?? ?
? ? NSLog(@"===> %@", [SSKeychain allAccounts]);
? ? // 從鑰匙串中獲取用戶密碼
? ? NSString *bundleId = [NSBundle mainBundle].bundleIdentifier;
? ? self.pwd.text = [SSKeychain passwordForService:bundleId account:self.userName.text];
}
?
?
轉載于:https://www.cnblogs.com/weijingyun/p/4562410.html
總結
以上是生活随笔為你收集整理的IOS的钥匙串,确保本地隐私数据的安全的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爱与不爱可悲是什么歌啊?
- 下一篇: 高速路上看见一只大黑狗在奔跑,我该如何施