簡體   English   中英

將任何對象保存到Keychain

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM