天天看點

iOS:iOS開發中使用者密碼儲存位置

如果要實作自動登入,不必每次打開應用都去登入,我們勢必要把密碼儲存到本地。

一般我們的操作是:

每次打開應用後,如果存在密碼,直接進入界面,然後再進行背景密碼驗證。如果沒網絡,我們可以跳過驗證;如果有網絡,我們可以背景去驗證帳号密碼的正确性,并根據伺服器的response做一些操作。

 iOS中沙盒有哪幾個檔案夾,都是用來幹嗎的

預設情況下,每個沙盒含有3個檔案夾:Documents, Library 和 tmp。因為應用的沙盒機制,應用隻能在幾個目錄下讀寫檔案

Documents:蘋果建議将程式中建立的或在程式中浏覽到的檔案資料儲存在該目錄下,iTunes備份和恢複的時候會包括此目錄

Library:存儲程式的預設設定或其它狀态資訊;

Library/Caches:存放緩存檔案,iTunes不會備份此目錄,此目錄下檔案不會在應用退出删除

tmp:提供一個即時建立臨時檔案的地方。

iOS:iOS開發中使用者密碼儲存位置
iOS:iOS開發中使用者密碼儲存位置

如圖就是NSUserDefaults對應的plist檔案在sandbox中的位置

iOS:iOS開發中使用者密碼儲存位置

                藍色部分為plist檔案

如果sandbox被破解,或者你的手機被越獄,那麼就能輕松拿到這個檔案。

那麼就能輕松讀到存儲的資訊,密碼就會不安全:

其實就是删除plist檔案中所有的鍵值對。

iOS:iOS開發中使用者密碼儲存位置
iOS:iOS開發中使用者密碼儲存位置

iOS中提供了很多種加密算法,對于存儲密碼,可以使用不可逆的MD5加密。

使用MD5加密需要導入頭檔案:

''#import <CommonCrypto/CommonDigest.h>

iOS:iOS開發中使用者密碼儲存位置
iOS:iOS開發中使用者密碼儲存位置

更加保險的方法是把密碼儲存在iOS提供的keychina中,并且删除應用後,密碼不會删除,下載下傳安裝還能使用。iOS系統提供了一些方法,進行一些簡單的封裝之後,就可以很友善的使用。

iOS:iOS開發中使用者密碼儲存位置

<a href="https://github.com/chenhuaizhe/iOS-keychain" target="_blank">Github-chenhuaizhe-iOS-keychain</a>

下面是封裝代碼,使用時需要先導入Security.framework:

PassWordTool.h

iOS:iOS開發中使用者密碼儲存位置
iOS:iOS開發中使用者密碼儲存位置

PassWordTool.m

iOS:iOS開發中使用者密碼儲存位置
iOS:iOS開發中使用者密碼儲存位置

KeychainTool.h

iOS:iOS開發中使用者密碼儲存位置
iOS:iOS開發中使用者密碼儲存位置

KeychainTool.m

iOS:iOS開發中使用者密碼儲存位置
iOS:iOS開發中使用者密碼儲存位置

驗證請求時,最好是不直接把明文密碼包含在請求裡面。

可以根據一系列字元串生成MD5加密後的簽名,根據user-id 和 簽名來驗證登入。

比如:

這樣得到的signStr和userid再作為網絡請求的參數傳給伺服器做驗證。

使用方法如下:

1、引入Security.framework架構。

2、引入頭檔案:#import"SFHFKeychainUtils.h"

3、存密碼:   

iOS:iOS開發中使用者密碼儲存位置
iOS:iOS開發中使用者密碼儲存位置

4、取密碼:

5、删除使用者:

程式猿神奇的手,每時每刻,這雙手都在改變着世界的互動方式!

本文轉自當天真遇到現實部落格園部落格,原文連結:http://www.cnblogs.com/XYQ-208910/p/5199935.html,如需轉載請自行聯系原作者