iOS 中的加密方式,iOS加密方式

來源:互聯網
上載者:User

iOS 中的加密方式,iOS加密方式

 iOS 中的加密方式

1 加密方式主要有: Base64,MD5,RSA,DES,AES,鑰匙串儲存,Cookie

2 各加密方式的比較

2.1 Base64

2.1.1 基本原理:採用64個基本的 ASCII 值對資料進行重新編碼.

2.1.2 實現步驟

> 將需要編碼的資料拆分成位元組數組

> 以3個位元組為一組

> 按順序排列24位元據,再將這24位元據均分為4組.

> 再在每組的最高位前補2個0,稱為一個位元組.

> 在最後一個位元組不足的時候末尾填0

> 在最後編碼完成的時候末尾添加1到2個=號

注:Base64的字元包括大/小寫a—z,0—9,以及+/

   Base64加密後還可以進行解密

2.2 MD5(數位簽章)

2.2.1 原理:將任意長度是位元組串轉化為特定長度的長整數.

注:轉換是將位元組串轉換而不是字串轉換.

謹記:MD5加密是不可解密的,因此用 MD5加密的程式進行密碼驗證的時候,只是驗證加密之後的字串比較,而不知道使用者的密碼.

2.2.2 使用

> 使用步驟很簡單,但是單純的 MD5加密是不安全的,常用一下方法

>  MD5加鹽:所謂的鹽值就是一個字串.即將使用者的密碼和鹽值拼接之後再加密.

> 時間戳記/動態密碼:即在進行 MD5加密的時候講時間和密碼結合之後再加密,故可以做到相同的加密方式,形同的密碼等加密之後的值是不同的

注:時間戳記/動態密碼加密要求用戶端和伺服器端的時間要相同.

     > 時間戳記/動態密碼加密的實現步驟:首先,第一次用 hmac MD5加密.其次,將加密後的值和目前時間的字串進行拼接.最後,將拼接後的值再次用 hmac MD5進行加密.

   伺服器端接收到密碼之後要計算目前時間和上一分鐘的值和密碼進行比較

2.3 DES

2.3.1 原理:它是一種區塊編碼器演算法,它是以64位為分組對資料進行加密.同時 DES 也是一種對稱式加密演算法(加密和解密用同一演算法).它的密鑰長度是56位(每一個第8位用作同位),密鑰可以是任意的56位的數,而且可以任意的改變.

補充:

DES對64(bit)位的明文分組M進行操作,M經過一個初始置換IP置換成m0,將m0明文分成左半部分和右半部分m0=(L0,R0),各32位長。然後進行16輪完全相同的運算,這些運算被稱為函數f,在運算過程中資料與密匙結合。經過16輪後,左,右半部分合在一起經過一個末置換,這樣就完成了。在每一輪中,密匙位移位,然後再從密匙的56位中選出48位。通過一個擴充置換將資料的右半部分擴充成48位,並通過一個異或操作替代成新的32位元據,在將其置換換一次。這四步運算構成了函數f。然後,通過另一個異或運算,函數f的輸出與左半部分結合,其結果成為新的右半部分,原來的右半部分成為新的左半部分。將該操作重複16次,就實現了。

解密過程:在經過所有的代替、置換、異或盒迴圈之後,你也許認為解密演算法與密碼編譯演算法完全不同。恰恰相反,經過精心選擇的各種操作,獲得了一個非常有用的性質:加密和解密使用相同的演算法。DES加密和解密唯一的不同是密匙的次序相反。如果各輪加密密匙分別是K1,K2,K3….K16那麼解密密匙就是K16,K15,K14…K1

2.4 鑰匙串儲存(SSKeychain 第三方架構)

2.4.1 使用原理:可以在鑰匙串中直接寫入純文字密碼.

注:要給寫入的密碼一個標示符,以便於取出密碼.

2.5 Cookie

2.5.1 是一個網路資訊塊,用來儲存資訊

2.5.2 Cookie 會自動登入,會將使用者的資料自動發給伺服器.

注: Cookie 中的資訊儲存在NSHTTPCookieStorage中.

2.6 AES

2.6.1 原理:是一個對稱式加密演算法.加長了 DES 加密的長度. AES設計有三個密鑰長度:128,192,256位三種. AES演算法主要包括三個方面:輪變化、圈數和密鑰擴充.

具體原理: http://blog.sina.com.cn/s/blog_4b957026010006kf.html

2.6.2 首先擷取要加密的字串

     其次加密(AESCrypt類中)

2.7 RSA

2.7.1 原理:它是一種非對稱式加密方法,需要兩個秘鑰公開金鑰和私密金鑰.公開金鑰和私密金鑰是一對,如果用公開金鑰進行加密,就只能用私密金鑰進行解密,如果用私密金鑰進行加密,那麼久只能用公開金鑰進行解密.

工作流程:接收方擷取一對密鑰,讓後將其中一個密鑰發送給發送方,發送方用接收方發過來的密鑰進行加密之後,再講密碼發給接收方,由於其中一個密鑰只能由另外一個密鑰進行解密,而另外一個密鑰在接收方手中並沒有在網路中發送,故可以保證很安全.

2.7.2 擷取公開金鑰和私密金鑰的步驟:

> 找出兩個很大的質數:A 和B

> C = A*B

> D = (A-1)*(B-1)

> 找出整數 E,E 與 D 互質.

> 找出整數 F,使得 E*F/D 餘數為1

> 計算後得 E 是公開金鑰, F 是私密金鑰.

> N 負責公開金鑰和私密金鑰之間的聯絡,其公式如下(對 X 進行加密)

  加密:(X^E)%N = Y

  解密:(Y^E)%N = X

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.