2010-06-10 96 views
1

下午好男人和女孩,iPhone SQLite密碼字段加密

希望這將是一個快速和容易的問題。

我正在構建一個應用程序,要求用戶輸入其鏈接到的在線服務的登錄詳細信息。可以添加和保存多個登錄詳細信息,因爲用戶可能有多個想要在其間切換的帳戶。

這些詳細信息將存儲在SQLite數據庫中,幷包含它們的密碼。現在的問題是:

1:這些密碼是否應該在數據庫中加密?我的直覺會說是,但是我不知道設備和系統有多安全,如果這是必要的。

2:如果他們應該加密我應該使用什麼?我認爲加密整個數據庫文件聽起來有點過度,所以我應該在將密碼保存到數據庫之前加密密碼?如果是這種情況,我可以用什麼來實現這個目標?我找到了一個「crypt(3)」的引用,但是我很難找到它或者如何實現它。

我急切地等待着你的回覆!

編輯:正如你將從選擇的答案和評論中看到的KeyChain是我一起去的。任何一個有興趣使用它這裏存在一些有用的源代碼:

http://log.scifihifi.com/post/55837387/simple-iphone-keychain-code

+0

請使用[keychain](http://developer.apple.com/iphone/library/documentation/Security/Conceptual/keychainServConcepts/iPhoneTasks/iPhoneTasks.html#//apple_ref/doc/uid/TP30000897-CH208- SW1)。 – kennytm 2010-06-10 20:05:54

回答

1

不要實現自己的密碼;只需使用鑰匙鏈。

+0

這看起來可能是贏家。 我會看看實現這個並讓你知道結果。 – 2010-06-11 06:51:35

+1

我已經實現了使用將數據保存到鑰匙串併成功地將其與保存的細節一起返回。我還沒有完全完成,但從目前的工作方式來看,這很簡單有效(假設你找到了一些有用的例子)。任何想使用鑰匙鏈的人都會看這裏:http://log.scifihifi.com/post/55837387/simple-iphone-keychain-code – 2010-06-11 13:32:02

0

1)是的。密碼應該被加密。

2)您應該加密數據庫的密碼。您是否必須在其他地方重新使用密碼,或者您是否僅將它們用作對照用戶提供的登錄憑證的檢查?

如果你只使用它們作爲支票,那麼你可以使用MD5或SHA-1之類的單向哈希函數或類似的東西(隨着一些隨機字符的拋出)。

否則,您需要使用一些可逆加密方法來檢索您的存儲值。如果可能的話,我會考慮使用鑰匙串。這是蘋果公司提供給開發者的東西,所以這是他們出口合規的責任。

編輯

此外,你可能想看看這個鏈接,如果你要爲後者的路線。它包括在評論一個@categoryNSMutableData,讓您避開不必填寫一份表格CCATS:

http://iphonedevelopment.blogspot.com/2009/02/strong-encryption-for-cocoa-cocoa-touch.html