SSKeychain

概要

Keychain目前主要功能就是幫助用戶安全地記住密碼,keychain保存的密碼文件都是經過加密的,其他人不能直接通過打開keychain的文件獲取保存在keychain中的密碼。

蘋果還提供了使用keychain保存密碼的API,如果APP使用了keychain API來保存密碼, 保存密碼的結果都可以在鑰匙串應用中查看到。

Safari就是用keychain來保存密碼的,當用戶在一個網頁中輸入了用戶名和密碼之後,Safari會詢問用戶是否需要記住密碼。如果用戶選擇記住Safari則會採用keychain進行密碼的保存,在下次用戶再次訪問同一個網站的時候,系統會自動進行用戶名和密碼的填充。同時在鑰匙串程序中,可以看到Safari保存的針對特定網頁的用戶名,在輸入了系統登錄密碼之後可以查看到對應的密碼明文。


iOS中使用keychain和userdefaults保存數據的對比

userdefault適合保存一些輕量級的數據,使用userdefault保存的時間加載的時候要快一些,數據以明文的形式保存在.plist文件中,不適合用來保存密碼信息。

文件的位置是Library/Application Support/iPhone Simulator/模擬器版本/Applications/應用對應的數字/Library/Preference/.plist文件

keychain採用的是將數據加密之後再保存到本地的,這樣對數據而言更安全。適合保存密碼之類的數據,

數據目錄: Library/Application Support/iPhone Simulator/模擬器版本/Library/Keychains/


SSkeychain

SSKeyChains對蘋果安全框架API進行了簡單封裝,支持對存儲在鑰匙串中密碼、賬戶進行訪問,包括讀取、刪除和設置。

對於只需要保存用戶名和密碼來說,SSKeychain可能更合適,它對keychain做了相應的封裝,接口相對於更加簡單。

對SSKeychain中的password,service,account的理解和使用

既然說到要用SSKeychain來保存用戶名和密碼,那麼需要使用到的SSKeychain的功能就包括添加用戶名和密碼,刪除用戶名和密碼、查詢用戶和密碼。

SSSkeychain的方法中涉及到的變量主要有三個,password,service,account。

password、account分別保存的是密碼和用戶名信息。service保存的是服務的類型,就是用戶名和密碼是爲什麼應用保存的一個標誌。比如一個用戶可以再不同的論壇中使用相同的用戶名和密碼,那麼service保存的信息分別標識不同的論壇。由於包名通常具有一定的唯一性,通常在程序中可以用包的名稱來作爲service的標識。

[SSKeychain setPassword: @"password"
             forService: @"service" 
                account: @"account"];

[SSKeychain accountsForService:@"service" 
                        error:&error];

setPassword的功能是保存account、service、password的

accoutsForService是提取對應於特定service的所有accouts,可以纔看出它的返回結果是NSArray類型的, 並且Array的每一個元素是以key-value格式保存的數據。 如果需要找出特定的用戶名的話,需要使用valueForKey@“acct”來定位用戶名。(由於在這之前keychain已經保存了一個數據,所以lastObject對應的下標是2.)

本文出處

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章