iOS簡單介紹RSA、DES 、AES加密、解密及MD5加密

MD5加密是單向的,只能加密不能解密(破解除外)。標題可能會引起讀者誤解,已經改正,感謝Li_Cheng同學的提醒,另外筆者發現Li_Cheng同學有篇MD5加密更為詳盡的文章,推薦閱讀:iOS開發 關于MD5加密的相關使用

加密的Demo,歡迎下載

Java端的加密解密,讀者可以看這篇文章http://www.lxweimin.com/p/98569e81cc0b

最近做了一個移動項目,是有服務器和客戶端類型的項目,客戶端是要登錄才行的,服務器也會返回數據,服務器是用Java開發的,客戶端要同時支持多平臺(AndroidiOS),在處理iOS的數據加密的時候遇到了一些問題。起初采取的方案是DES加密,老大說DES加密是對稱的,網絡抓包加上反編譯可能會被破解,故采取RSA方式加密。RSA加密時需要公鑰和私鑰,客戶端保存公鑰加密數據,服務器保存私鑰解密數據。(iOS端公鑰加密私鑰解密、java端公鑰加密私鑰解密,java端私鑰加密公鑰解密都容易做到,iOS不能私鑰加密公鑰解密,只能用于驗簽)。

問題

問題1:iOS端公鑰加密的數據用Java端私鑰解密。

iOS無論使用系統自帶的sdk函數,用mac產生的或者使用java的jdk產生的公鑰和私鑰,進行加密解密自己都可以使用。不過ios加密,java解密,或者反過來就不能用了。要么是無法創建報告個-9809或-50的錯誤,要么解出來是亂碼。ios系統函數種只有用公鑰加密,私鑰解密的方式。而公鑰加密每次結果都不同。

MAC上生成公鑰、私鑰的方法,及使用

1.打開終端,切換到自己想輸出的文件夾下

2.輸入指令:openssl(openssl是生成各種秘鑰的工具,mac已經嵌入

3.輸入指令:genrsa

-out rsa_private_key.pem 1024(生成私鑰,java端使用的)

4.輸入指令:rsa

-in rsa_private_key.pem -out rsa_public_key.pem -pubout(生成公鑰)

5.輸入指令:pkcs8

-topk8 -in rsa_private_key.pem -out pkcs8_rsa_private_key.pem -nocrypt(私鑰轉格式,在ios端使用私鑰解密時用這個私鑰)

注意:在MAC上生成三個.pem格式的文件,一個公鑰,兩個私鑰,都可以在終端通過指令vim xxx.pem 打開,里面是字符串,第三步生成的私鑰是java端用來解密數據的,第五步轉換格式的私鑰iOS端可以用來調試公鑰、私鑰解密(因為私鑰不留在客戶端)

詳細步驟

問題2:服務器返回數據也要加密,老大打算用java私鑰加密,ios用公鑰解密(由于iOS做不到用私鑰加密公鑰解密,只能私鑰加密公鑰驗簽),所以這種方案也有問題。

通過看一些大牛的介紹,了解了iOS常用的加密方式

1 通過簡單的URLENCODE + BASE64編碼防止數據明文傳輸

2 對普通請求、返回數據,生成MD5校驗(MD5中加入動態密鑰),進行數據完整性(簡單防篡改,安全性較低,優點:快速)校驗

3 對于重要數據,使用RSA進行數字簽名,起到防篡改作

4 對于比較敏感的數據,如用戶信息(登陸、注冊等),客戶端發送使用RSA加密,服務器返回使用DES(AES)加密

原因:客戶端發送之所以使用RSA加密,是因為RSA解密需要知道服務器私鑰,而服務器私鑰一般盜取難度較大;如果使用DES的話,可以通過破解客戶端獲取密鑰,安全性較低。而服務器返回之所以使用DES,是因為不管使用DES還是RSA,密鑰(或私鑰)都存儲在客戶端,都存在被破解的風險,因此,需要采用動態密鑰,而RSA的密鑰生成比較復雜,不太適合動態密鑰,并且RSA速度相對較慢,所以選用DES)

所以此次加密,我們選擇了第四種加密方式

加密方式

ios端進行DES加密、解密時非常方便

1、引入頭文件#import"DES3Util.h"2、加密時調用類方法? +(NSString*) encryptUseDES:(NSString*)plainText key:(NSString*)key;3、解密時調用類方法? +(NSString*)decryptUseDES:(NSString*)cipherText key:(NSString*)key;

ios端進行RSA加密、解密時非常方便

1、引入頭文件#import"RSAUtil.h"2、公鑰加密時調用類方法:+ (NSString*)encryptString:(NSString*)str publicKey:(NSString*)pubKey;+ (NSData*)encryptData:(NSData*)data publicKey:(NSString*)pubKey;3、私鑰解密時調用類方法 + (NSString*)decryptString:(NSString*)str privateKey:(NSString*)privKey;+ (NSData*)decryptData:(NSData*)data privateKey:(NSString*)privKey;

ios端進行MD5加密、解密時非常方便

1、引入頭文件#import"MD5Util"2、加密時調用方法:- (NSString*)md5:(NSString*)str;

ios端進行AES加密、解密時非常方便

1、引入頭文件#import"AES.h"2、加密時調用方法+ (NSString*)encrypt:(NSString*)message password:(NSString*)password;2、解密時調用的方法+ (NSString*)decrypt:(NSString*)base64EncodedString password:(NSString*)password;

有關RSA、MD5、AES加密的原理介紹

效果圖

Encryption.gif

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,885評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,312評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,993評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,667評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,410評論 6 411
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,778評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,775評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,955評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,521評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,266評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,468評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,998評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,696評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,095評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,385評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,193評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,431評論 2 378

推薦閱讀更多精彩內容