[英]Saving any object to Keychain
我想將一個可能包含敏感數據的對象保存到鑰匙串中。 為此,我將此對象轉換為NSData實例。
我有點困惑我需要使用哪些屬性。 是否可以使用kSecClassGenericPassword作為kSecClass,即使它不是真正的密碼? 此外,我設置了kSecAttrAccount 。 我在某處讀過我還需要添加kSecAttrService 。 如果我不這樣做會有什么影響?
在GitHub上查看SSKeychain 。 這是一個很好的開源包裝鑰匙鏈,使它非常容易使用。 如果您想更多地了解iOS / OS X上的鑰匙串和安全性如何工作並且您已注冊到Apple開發人員計划,那么您可以在developer.apple.com上查看的WWDC會話視頻很少。
在保存到鑰匙串之前, Strongbox使用NSKeyedUnarchiver將任何類型符合NSCoding轉換為NSData對象。
請參閱此庫: https : //github.com/nicklockwood/FXKeychain
- (BOOL)setObject:(id)object forKey:(id)key;
- (BOOL)setObject:(id)object forKeyedSubscript:(id)key;
基本示例:
#import "ViewController.h"
#import "FXKeychain.h"
@interface ViewController () <UITextFieldDelegate, UITextViewDelegate>
@property (nonatomic, strong) IBOutlet UITextField *keyField;
@property (nonatomic, strong) IBOutlet UITextView *dataField;
@end
@implementation ViewController
- (IBAction)save
{
//save data
[FXKeychain defaultKeychain][_keyField.text] = _dataField.text;
}
- (IBAction)load
{
//load data
_dataField.text = [FXKeychain defaultKeychain][_keyField.text];
}
- (IBAction)delete
{
//clear field
_dataField.text = @"";
//delete data
[[FXKeychain defaultKeychain] removeObjectForKey:_keyField.text];
}
- (IBAction)tap
{
[_keyField resignFirstResponder];
[_dataField resignFirstResponder];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
@end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.