iOS的keychain服務提供了一種安全的保存私密信息(密碼,序列號蔗衡,證書等)的方式再榄,每個ios程序都有一個獨立的keychain存儲。相對于NSUserDefaults襟诸、文件保存等一般方式瓦堵,keychain保存更為安全,而且keychain里保存的信息不會因App被刪除而丟失励堡,所以在重裝App后谷丸,keychain里的數(shù)據(jù)還能使用。從ios 3应结。0開始刨疼,跨程序分享keychain變得可行泉唁。
如何需要在應用里使用使用keyChain,我們需要導入Security.framework 揩慕,keychain的操作接口聲明在頭文件SecItem.h里亭畜。直接使用SecItem.h里方法操作keychain,需要寫的代碼較為復雜迎卤,為減輕咱們程序員的開發(fā)拴鸵,我們可以使用一些已經(jīng)封裝好了的工具類,下面我會簡單介紹下我用過的兩個工具類:KeychainItemWrapper和SFHFKeychainUtils蜗搔。
?KeychainItemWrapper 下載地址劲藐。只需要把“KeychainItemWrapper.h”和“KeychainItemWrapper.m”拷貝到我們項目,并導入Security.framework 樟凄。KeychainItemWrapper的用法:
/** 初始化一個保存用戶帳號的KeychainItemWrapper */
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"Account Number"
accessGroup:@"YOUR_APP_ID_HERE.com.yourcompany.AppIdentifier"];
//保存帳號
[wrapper setObject:@"<帳號>" forKey:(id)kSecAttrAccount];
//保存密碼
[wrapper setObject:@"<帳號密碼>" forKey:(id)kSecValueData];
//從keychain里取出帳號密碼
NSString *password = [wrapper objectForKey:(id)kSecValueData];
//清空設置
[wrapper resetKeychainItem];
其中方法“- (void)setObject:(id)inObject forKey:(id)key;”里參數(shù)“forKey”的值應該是Security.framework 里頭文件“SecItem.h”里定義好的key聘芜,用其他字符串做key程序會崩潰!
SFHFKeychainUtils是另一個封裝了KeyChain簡單操作的第三方類庫缝龄,使用上比KeychainItemWrapper要簡單點汰现,SFHFKeychainUtils只提供了獲取、保存和刪除三個方法:
SFHFKeychainUtils 提供了在 iOS keychain中安全的存儲密碼的工具
1叔壤、引入Security.frameWork框架瞎饲。
2、引入頭文件:SFHKeychainUtils.h.
3炼绘、存密碼:
[SFHFKeychainUtils storeUsername:@"dd" andPassword:@"aa"forServiceName:SERVICE_NAME updateExisting:1 error:nil];
[SFHFKeychainUtils deleteItemForUsername:@"dd" andServiceName:SERVICE_NAME error:nil];
4嗅战、取密碼:
NSString *passWord =? [SFHFKeychainUtils getPasswordForUsername:@"dd"andServiceName:SERVICE_NAME error:nil];