iOS RSA频鉴、DES 栓辜、AES加密、解密及MD5加密

更新:MD5加密是單向的垛孔,只能加密不能解密(破解除外)藕甩。標(biāo)題可能會(huì)引起讀者誤解,已經(jīng)改正周荐,感謝Li_Cheng同學(xué)的提醒辛萍,另外筆者發(fā)現(xiàn)Li_Cheng同學(xué)有篇MD5加密更為詳盡的文章,推薦閱讀:iOS開發(fā) 關(guān)于MD5加密的相關(guān)使用

加密的Demo羡藐,歡迎下載

java端的加密解密贩毕,讀者可以看我同事的這篇文章http://www.reibang.com/p/98569e81cc0b

最近做了一個(gè)移動(dòng)項(xiàng)目,是有服務(wù)器和客戶端類型的項(xiàng)目仆嗦,客戶端是要登錄才行的辉阶,服務(wù)器也會(huì)返回?cái)?shù)據(jù),服務(wù)器是用Java開發(fā)的瘩扼,客戶端要同時(shí)支持多平臺(tái)(Android谆甜、iOS),在處理iOS的數(shù)據(jù)加密的時(shí)候遇到了一些問題集绰。起初采取的方案是DES加密规辱,老大說DES加密是對(duì)稱的,網(wǎng)絡(luò)抓包加上反編譯可能會(huì)被破解栽燕,故采取RSA方式加密罕袋。RSA加密時(shí)需要公鑰和私鑰,客戶端保存公鑰加密數(shù)據(jù)碍岔,服務(wù)器保存私鑰解密數(shù)據(jù)浴讯。(iOS端公鑰加密私鑰解密、java端公鑰加密私鑰解密蔼啦,java端私鑰加密公鑰解密都容易做到榆纽,iOS不能私鑰加密公鑰解密,只能用于驗(yàn)簽)捏肢。

問題

問題1:iOS端公鑰加密的數(shù)據(jù)用Java端私鑰解密奈籽。

iOS無論使用系統(tǒng)自帶的sdk函數(shù),用mac產(chǎn)生的或者使用java的jdk產(chǎn)生的公鑰和私鑰鸵赫,進(jìn)行加密解密自己都可以使用衣屏。不過ios加密,java解密奉瘤,或者反過來就不能用了勾拉。要么是無法創(chuàng)建報(bào)告?zhèn)€-9809或-50的錯(cuò)誤煮甥,要么解出來是亂碼盗温。ios系統(tǒng)函數(shù)種只有用公鑰加密藕赞,私鑰解密的方式。而公鑰加密每次結(jié)果都不同卖局。

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

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

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

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(私鑰轉(zhuǎn)格式染坯,在ios端使用私鑰解密時(shí)用這個(gè)私鑰)

注意:在MAC上生成三個(gè).pem格式的文件均芽,一個(gè)公鑰,兩個(gè)私鑰单鹿,都可以在終端通過指令vim xxx.pem 打開掀宋,里面是字符串,第三步生成的私鑰是java端用來解密數(shù)據(jù)的仲锄,第五步轉(zhuǎn)換格式的私鑰iOS端可以用來調(diào)試公鑰劲妙、私鑰解密(因?yàn)樗借€不留在客戶端)

詳細(xì)步驟

問題2:服務(wù)器返回?cái)?shù)據(jù)也要加密,老大打算用java私鑰加密,ios用公鑰解密(由于iOS做不到用私鑰加密公鑰解密儒喊,只能私鑰加密公鑰驗(yàn)簽)镣奋,所以這種方案也有問題。

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

1 通過簡(jiǎn)單的URLENCODE + BASE64編碼防止數(shù)據(jù)明文傳輸

2 對(duì)普通請(qǐng)求侨颈、返回?cái)?shù)據(jù),生成MD5校驗(yàn)(MD5中加入動(dòng)態(tài)密鑰)芯义,進(jìn)行數(shù)據(jù)完整性(簡(jiǎn)單防篡改肛搬,安全性較低,優(yōu)點(diǎn):快速)校驗(yàn)

3 對(duì)于重要數(shù)據(jù)毕贼,使用RSA進(jìn)行數(shù)字簽名温赔,起到防篡改作

4 對(duì)于比較敏感的數(shù)據(jù),如用戶信息(登陸鬼癣、注冊(cè)等)陶贼,客戶端發(fā)送使用RSA加密,服務(wù)器返回使用DES(AES)加密

原因:客戶端發(fā)送之所以使用RSA加密待秃,是因?yàn)镽SA解密需要知道服務(wù)器私鑰拜秧,而服務(wù)器私鑰一般盜取難度較大;如果使用DES的話章郁,可以通過破解客戶端獲取密鑰枉氮,安全性較低志衍。而服務(wù)器返回之所以使用DES,是因?yàn)椴还苁褂肈ES還是RSA聊替,密鑰(或私鑰)都存儲(chǔ)在客戶端楼肪,都存在被破解的風(fēng)險(xiǎn),因此惹悄,需要采用動(dòng)態(tài)密鑰春叫,而RSA的密鑰生成比較復(fù)雜,不太適合動(dòng)態(tài)密鑰泣港,并且RSA速度相對(duì)較慢暂殖,所以選用DES)

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

加密方式

ios端進(jìn)行DES加密当纱、解密時(shí)非常方便

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

ios端進(jìn)行RSA加密晨横、解密時(shí)非常方便

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

ios端進(jìn)行MD5加密、解密時(shí)非常方便

1滞时、引入頭文件#import"MD5Util"2叁幢、加密時(shí)調(diào)用方法:- (NSString*)md5:(NSString*)str;

ios端進(jìn)行AES加密、解密時(shí)非常方便

1坪稽、引入頭文件#import"AES.h"2曼玩、加密時(shí)調(diào)用方法+ (NSString*)encrypt:(NSString*)message password:(NSString*)password;2、解密時(shí)調(diào)用的方法+ (NSString*)decrypt:(NSString*)base64EncodedString password:(NSString*)password;


自己與服務(wù)器調(diào)試DES解密 ?在github有 ? oc代碼 ?:


//1窒百、 獲取證書 ?


//2黍判、 des 解密



不理解可以問我 , 我也是剛知道 ?篙梢,如果是大神請(qǐng)多多指教顷帖。


有關(guān)RSA、MD5渤滞、AES加密的原理介紹

參考文章鏈接:http://www.reibang.com/p/8fd8306a95d0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贬墩,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子妄呕,更是在濱河造成了極大的恐慌陶舞,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绪励,死亡現(xiàn)場(chǎng)離奇詭異肿孵,居然都是意外死亡唠粥,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門停做,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晤愧,“玉大人,你說我怎么就攤上這事雅宾⊙蹋” “怎么了葵硕?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵眉抬,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我懈凹,道長(zhǎng)蜀变,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任介评,我火速辦了婚禮库北,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘们陆。我一直安慰自己寒瓦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布坪仇。 她就那樣靜靜地躺著杂腰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪椅文。 梳的紋絲不亂的頭發(fā)上喂很,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音皆刺,去河邊找鬼少辣。 笑死,一個(gè)胖子當(dāng)著我的面吹牛羡蛾,可吹牛的內(nèi)容都是我干的漓帅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼痴怨,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼忙干!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起腿箩,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤豪直,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后珠移,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弓乙,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡末融,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了暇韧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勾习。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖懈玻,靈堂內(nèi)的尸體忽然破棺而出巧婶,到底是詐尸還是另有隱情,我是刑警寧澤涂乌,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布艺栈,位于F島的核電站,受9級(jí)特大地震影響湾盒,放射性物質(zhì)發(fā)生泄漏湿右。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一罚勾、第九天 我趴在偏房一處隱蔽的房頂上張望毅人。 院中可真熱鬧,春花似錦尖殃、人聲如沸丈莺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缔俄。三九已至,卻和暖如春蚪战,著一層夾襖步出監(jiān)牢的瞬間牵现,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工邀桑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瞎疼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓壁畸,卻偏偏與公主長(zhǎng)得像贼急,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子捏萍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容