ios常見(jiàn)加密解密方法(RSA、DES、AES、MD5)

最近做了一個(gè)移動(dòng)項(xiàng)目,是有服務(wù)器和客戶(hù)端類(lèi)型的項(xiàng)目,客戶(hù)端是要登錄才行的,服務(wù)器也會(huì)返回?cái)?shù)據(jù),服務(wù)器是用Java開(kāi)發(fā)的,客戶(hù)端要同時(shí)支持多平臺(tái)(Android、iOS),在處理iOS的數(shù)據(jù)加密的時(shí)候遇到了一些問(wèn)題。起初采取的方案是DES加密,老大說(shuō)DES加密是對(duì)稱(chēng)的,網(wǎng)絡(luò)抓包加上反編譯可能會(huì)被破解,故采取RSA方式加密。RSA加密時(shí)需要公鑰和私鑰,客戶(hù)端保存公鑰加密數(shù)據(jù),服務(wù)器保存私鑰解密數(shù)據(jù)。(iOS端公鑰加密私鑰解密、java端公鑰加密私鑰解密,java端私鑰加密公鑰解密都容易做到,iOS不能私鑰加密公鑰解密,只能用于驗(yàn)簽)。

目前成都創(chuàng)新互聯(lián)已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、林周網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

問(wèn)題

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

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

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

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

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è)私鑰,都可以在終端通過(guò)指令vim xxx.pem 打開(kāi),里面是字符串,第三步生成的私鑰是java端用來(lái)解密數(shù)據(jù)的,第五步轉(zhuǎn)換格式的私鑰iOS端可以用來(lái)調(diào)試公鑰、私鑰解密(因?yàn)樗借€不留在客戶(hù)端)

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

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

1 通過(guò)簡(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ù),如用戶(hù)信息(登陸、注冊(cè)等),客戶(hù)端發(fā)送使用RSA加密,服務(wù)器返回使用DES(AES)加密
原因:客戶(hù)端發(fā)送之所以使用RSA加密,是因?yàn)镽SA解密需要知道服務(wù)器私鑰,而服務(wù)器私鑰一般盜取難度較大;如果使用DES的話,可以通過(guò)破解客戶(hù)端獲取密鑰,安全性較低。而服務(wù)器返回之所以使用DES,是因?yàn)椴还苁褂肈ES還是RSA,密鑰(或私鑰)都存儲(chǔ)在客戶(hù)端,都存在被破解的風(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)用類(lèi)方法 

+(NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key;

3、解密時(shí)調(diào)用類(lèi)方法 

+(NSString *)decryptUseDES:(NSString *)cipherText key:(NSString *)key;

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

1、引入頭文件

 #import "RSAUtil.h"

2、公鑰加密時(shí)調(diào)用類(lèi)方法:

+ (NSString *)encryptString:(NSString *)str publicKey:(NSString *)pubKey;
+ (NSData *)encryptData:(NSData *)data publicKey:(NSString *)pubKey;

3、私鑰解密時(shí)調(diào)用類(lèi)方法

+ (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;

效果圖

ios常見(jiàn)加密解密方法(RSA、DES 、AES、MD5)

Demo下載:Encryptions_jb51.rar

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

文章標(biāo)題:ios常見(jiàn)加密解密方法(RSA、DES、AES、MD5)
標(biāo)題URL:http://bm7419.com/article2/pcgcic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、Google自適應(yīng)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)網(wǎng)站排名、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司