欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年02月15日 16:43:13   作者:AimLay  
本篇文章主要介紹了ios常見加密解密方法(RSA、DES 、AES、MD5),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

問題

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

iOS無論使用系統(tǒng)自帶的sdk函數(shù),用mac產(chǎn)生的或者使用java的jdk產(chǎn)生的公鑰和私鑰,進(jìn)行加密解密自己都可以使用。不過ios加密,java解密,或者反過來就不能用了。要么是無法創(chuàng)建報告?zhèn)€-9809或-50的錯誤,要么解出來是亂碼。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端使用私鑰解密時用這個私鑰)

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

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

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

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

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

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

4 對于比較敏感的數(shù)據(jù),如用戶信息(登陸、注冊等),客戶端發(fā)送使用RSA加密,服務(wù)器返回使用DES(AES)加密
原因:客戶端發(fā)送之所以使用RSA加密,是因為RSA解密需要知道服務(wù)器私鑰,而服務(wù)器私鑰一般盜取難度較大;如果使用DES的話,可以通過破解客戶端獲取密鑰,安全性較低。而服務(wù)器返回之所以使用DES,是因為不管使用DES還是RSA,密鑰(或私鑰)都存儲在客戶端,都存在被破解的風(fēng)險,因此,需要采用動態(tài)密鑰,而RSA的密鑰生成比較復(fù)雜,不太適合動態(tài)密鑰,并且RSA速度相對較慢,所以選用DES)
所以此次加密,我們選擇了第四種加密方式

加密方式

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

1、引入頭文件

 #import "DES3Util.h"

2、加密時調(diào)用類方法 

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

3、解密時調(diào)用類方法 

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

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

1、引入頭文件

 #import "RSAUtil.h"

2、公鑰加密時調(diào)用類方法:

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

3、私鑰解密時調(diào)用類方法

+ (NSString *)decryptString:(NSString *)str privateKey:(NSString *)privKey;
+ (NSData *)decryptData:(NSData *)data privateKey:(NSString *)privKey;

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

1、引入頭文件

 #import "MD5Util"

2、加密時調(diào)用方法:

- (NSString *)md5:(NSString *)str;

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

1、引入頭文件

#import "AES.h"

2、加密時調(diào)用方法

+ (NSString *)encrypt:(NSString *)message password:(NSString *)password;

2、解密時調(diào)用的方法

+ (NSString *)decrypt:(NSString *)base64EncodedString password:(NSString *)password;

效果圖

Demo下載:Encryptions_jb51.rar

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • IOS 開發(fā)之PickerView文字和隨機(jī)數(shù)的使用

    IOS 開發(fā)之PickerView文字和隨機(jī)數(shù)的使用

    這篇文章主要介紹了IOS 開發(fā)之PickerView文字和隨機(jī)數(shù)的使用的相關(guān)資料,這里提供實例幫助大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • IOS CoreAnimation中l(wèi)ayer動畫閃爍的解決方法

    IOS CoreAnimation中l(wèi)ayer動畫閃爍的解決方法

    這篇文章主要為大家詳細(xì)介紹了IOS CoreAnimation中l(wèi)ayer動畫閃爍的原因,分享了layer動畫閃爍的解決方法,感興趣的小伙伴們可以參考一下
    2016-06-06
  • iOS?實現(xiàn)類似抖音滾動效果

    iOS?實現(xiàn)類似抖音滾動效果

    這篇文章主要介紹了iOS?實現(xiàn)類似抖音滾動效果,整體思路是我們將tableView 的contentinset設(shè)置為上面一個屏幕的高度,下面一個屏幕的高度,左右為0,這樣保證我們滾動過去的時候
    都是準(zhǔn)備好的內(nèi)容,需要的朋友可以參考下
    2024-06-06
  • xcode8提交ipa失敗無法構(gòu)建版本問題的解決方案

    xcode8提交ipa失敗無法構(gòu)建版本問題的解決方案

    xcode升級到xcode8后發(fā)現(xiàn)構(gòu)建不了新的版本。怎么解決呢?下面小編給大家?guī)砹藊code8提交ipa失敗無法構(gòu)建版本問題的解決方案,非常不錯,一起看看吧
    2016-10-10
  • Objective-C中NSArray的基本用法示例

    Objective-C中NSArray的基本用法示例

    這篇文章主要介紹了Objective-C中NSArray的基本用法示例,包括基本的排序等方法的介紹,需要的朋友可以參考下
    2015-09-09
  • iOS中定位(location manager )出現(xiàn)log日志的解決辦法

    iOS中定位(location manager )出現(xiàn)log日志的解決辦法

    這篇文章主要給大家介紹了關(guān)于iOS中定位(location manager )出現(xiàn)log日志的解決辦法,文中通過示例代碼將解決的辦法介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • iOS關(guān)閉虛擬鍵盤方法匯總

    iOS關(guān)閉虛擬鍵盤方法匯總

    在iOS應(yīng)用開發(fā)中,有三類視圖對象會打開虛擬鍵盤,進(jìn)行輸入操作,但如何關(guān)閉虛擬鍵盤,卻沒有提供自動化的方法
    2016-04-04
  • ios中圖像進(jìn)行壓縮方法匯總

    ios中圖像進(jìn)行壓縮方法匯總

    在Iphone上有兩種讀取圖片數(shù)據(jù)的簡單方法: UIImageJPEGRepresentation和UIImagePNGRepresentation. UIImageJPEGRepresentation函數(shù)需要兩個參數(shù):圖片的引用和壓縮系數(shù).而UIImagePNGRepresentation只需要圖片引用作為參數(shù).
    2015-05-05
  • 2016年iOS公開可利用漏洞總結(jié)

    2016年iOS公開可利用漏洞總結(jié)

    本文總結(jié)了2016年比較嚴(yán)重的iOS漏洞(可用于遠(yuǎn)程代碼執(zhí)行或越獄),希望能夠?qū)Υ蠹乙苿影踩矫娴墓ぷ骱脱芯繋硪恍椭?/div> 2016-12-12
  • iOS購物分類模塊的實現(xiàn)方案

    iOS購物分類模塊的實現(xiàn)方案

    這篇文章主要為大家詳細(xì)介紹了iOS購物分類模塊的實現(xiàn)方案,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-02-02

最新評論