2013-06-12 26 views
1

開發一個應用程序,它將使多個用戶使用相同的設備並具有脫機功能。 找到鑰匙串包裝。但真正的問題是如何管理多個鑰匙串中的用戶密碼?我有一個sqlite數據庫用於存儲所有登錄的用戶名。什麼是管理密碼的最佳方式?以及如何?如何在iOS中管理密碼?

+0

知道鑰匙串並不是完全安全的。如果設備被越獄,那麼有人可以以純文本訪問鑰匙串。如果您要使用鑰匙串,則還應該執行越獄檢測。 – SpyMachine

回答

0

您可以將密碼存儲在鑰匙串中。

創建一個包含用戶名作爲鍵和密碼作爲值的字典。您可以將此字典存儲到鑰匙串項目以安全地存儲所有密碼。

0

您可以使用包裝器SFHFKeychainUtils,併爲不同的服務存儲不同的密碼。

您將用戶保存在每個服務的NSUserDefaults中,然後使用serviceName參數存儲並提取密碼。

 [SFHFKeychainUtils storeUsername:name andPassword:secret forServiceName:serviceName updateExisting:YES error:&error]; 
0

在這個開源項目採取在github上看看SSKeyChain 作品非常相似,以至於包裝,但還可以訪問帳戶,讓密碼,設置密碼,並刪除密碼。

插圖密碼到鑰匙串:

NSError *error; 
[SSKeychain setPassword:@"password" 
      forService:@"example_name" 
       account:@"account1" 
        error:&error]; 

在你情我願更改帳戶可變你的第二個密碼。

要檢索密碼:

NSError *error; 
    NSLog(@"password1 is %@", [SSKeychain passwordForService:@"example_name" account:@"account1" error:&error]); 
    NSLog(@"password2 is %@", [SSKeychain passwordForService:@"example_name" account:@"account2" error:&error]); 
+0

那麼使用這麼多帳戶不同的密碼? –

+0

如果你想要一個Obj-c類而不想進入c api,那麼這將是那種簡單的方法,但是如果你決定要進入c api路徑,甚至修改SSKeyChain,請查看kSecClassGenericPassword和kSecClassInternetPassword。 KeyChain對象存儲在字典中,因此密鑰必須是唯一的,但如果您是兩個密鑰,則會創建兩種類型的密鑰,一種通用密碼和另一種Internet密碼,這兩種密碼將允許一個鑰匙串中的兩個密碼 –