ios中KeyChain用途(整理)

來源:互聯網
上載者:User

一、在應用間利用KeyChain共用資料我們可以把KeyChain理解為一個Dictionary,所有資料都以key-value的形式儲存,可以對這個Dictionary進行add、update、get、delete這四個操作。對於每一個應用來說,KeyChain都有兩個訪問區,私人區和公用區。私人區是一個sandbox,本程式儲存的任何資料都對其他程式不可見。而要想在將儲存的內容放在公用區,需要先聲明公用區的名稱,官方文檔管這個名稱叫“keychain access group”,聲明的方法是建立一個plist檔案,名字隨便起,內容如下:

“yourAppID.com.yourCompany.whatever”就是你要起的公用區名稱,除了whatever欄位可以隨便定之外,其他的都必須如實填寫。這個檔案的路徑要配置在 Project->build setting->Code Signing Entitlements裡,否則公用區無效,配置好後,須用你正式的認證簽名編譯才可通過,否則xcode會彈框告訴你code signing有問題。所以,蘋果限制了你只能同公司的產品共用KeyChain資料,別的公司訪問不了你公司產品的KeyChain。

二、儲存私密資訊iOS的keychain服務提供了一種安全的儲存私密資訊(密碼,序號,認證等)的方式,每個ios程式都有一個獨立的keychain儲存。相對於NSUserDefaults、檔案儲存等一般方式,keychain儲存更為安全,而且keychain裡儲存的資訊不會因App被刪除而丟失,所以在重裝App後,keychain裡的資料還能使用。在應用裡使用使用keyChain,我們需要匯入Security.framework ,keychain的操作介面聲明在標頭檔SecItem.h裡。直接使用SecItem.h裡方法操作keychain,需要寫的代碼較為複雜,為減輕咱們程式員的開發,我們可以使用一些已經封裝好了的工具類,下面我會簡單介紹下我用過的兩個工具類:KeychainItemWrapper和SFHFKeychainUtils。

(一)KeychainItemWrapper
:http://download.csdn.net/detail/u011439689/6877641
KeychainItemWrapper是apple官方例子“GenericKeychain”裡一個訪問keychain常用操作的封裝類,在官網上下載了GenericKeychain項目後,只需要把“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;”裡參數“forKey”的值應該是Security.framework 裡標頭檔“SecItem.h”裡定義好的key,用其他字串做key程式會崩潰!

(二)SFHFKeychainUtils 提供了在 iOS keychain中安全的儲存密碼的工具:http://download.csdn.net/detail/u011439689/68776551、引入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];

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.