1、AES加密
導(dǎo)入NSData+AES.h文件
下載鏈接
這里AES在iOS加過密以后以nsdata的形式存下來溪猿,如果想以nsstring形式存儲(chǔ)钩杰,那么對(duì)nsdata進(jìn)行base64位編碼。
[測(cè)試AES的加密和解密的工具]http://tool.chacuo.net/cryptaes)
2诊县、MD5加密
MD5加密讲弄,這是一種單向加密
壓縮性:任意長度的數(shù)據(jù),算出的MD5值長度都是固定的
容易計(jì)算:從原數(shù)據(jù)計(jì)算出MD5值很容易
抗修改性:對(duì)原數(shù)據(jù)進(jìn)行任何改動(dòng)依痊,哪怕只修改1個(gè)字節(jié)避除,所得到的MD5值都有很大區(qū)別。
強(qiáng)抗碰撞:已知原數(shù)據(jù)和其MD5值胸嘁,想找到一個(gè)具有相同MD5值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的瓶摆。
測(cè)試MD5的加密和解密的工具
3、Base64加密
Base64是網(wǎng)絡(luò)上最常見的用于傳輸8Bit字節(jié)代碼的編碼方式之一性宏,大家可以查看RFC2045~RFC2049群井,上面有MIME的詳細(xì)規(guī)范。Base64編碼可用于在HTTP環(huán)境下傳遞較長的標(biāo)識(shí)信息衔沼。例如蝌借,在Java Persistence系統(tǒng)Hibernate中,就采用了Base64來將一個(gè)較長的唯一標(biāo)識(shí)符(一般為128-bit的UUID)編碼為一個(gè)字符串指蚁,用作HTTP表單和HTTP GET URL中的參數(shù)菩佑。在其他應(yīng)用程序中,也常常需要把二進(jìn)制數(shù)據(jù)編碼為適合放在URL(包括隱藏表單域)中的形式凝化。此時(shí)稍坯,采用Base64編碼具有不可讀性,即所編碼的數(shù)據(jù)不會(huì)被人用肉眼所直接看到搓劫。
基本原理:
原本是 8個(gè)bit 一組表示數(shù)據(jù),改為 6個(gè)bit一組表示數(shù)據(jù),不足的部分補(bǔ)零,每 兩個(gè)0 用 一個(gè) = 表示
用base64 編碼之后,數(shù)據(jù)長度會(huì)變大,增加了大約 1/3 左右.(8-6)/6
可進(jìn)行反向解密
Xcode7.0 之后出現(xiàn)的
編碼有個(gè)非常顯著的特點(diǎn),末尾有個(gè) = 號(hào)
4瞧哟、RSA加密
一、使用openssl生成所需秘鑰文件
生成環(huán)境是在mac系統(tǒng)下枪向,使用openssl進(jìn)行生成勤揩,首先打開終端,按下面這些步驟依次來做:
1秘蛔、生成模長為1024bit的私鑰文件private_key.pemopenssl genrsa -out private_key.pem 1024
- 生成證書請(qǐng)求文件rsaCertReq.csr
openssl req -new -key private_key.pem -out rsaCerReq.csr
注意:這一步會(huì)提示輸入國家陨亡、省份傍衡、mail等信息,可以根據(jù)實(shí)際情況填寫负蠕,或者全部不用填寫蛙埂,直接全部敲回車
- 生成證書rsaCert.crt,并設(shè)置有效時(shí)間為1年
openssl x509 -req -days 3650 -in rsaCerReq.csr -signkey private_key.pem -out rsaCert.crt
- 生成供iOS使用的公鑰文件public_key.der
openssl x509 -outform der -in rsaCert.crt -out public_key.der
- 生成供iOS使用的私鑰文件private_key.p12
openssl pkcs12 -export -out private_key.p12 -inkey private_key.pem -in rsaCert.crt
注意:這一步會(huì)提示給私鑰文件設(shè)置密碼遮糖,直接輸入想要設(shè)置密碼即可绣的,然后敲回車,然后再驗(yàn)證剛才設(shè)置的密碼欲账,再次輸入密碼屡江,然后敲回車,完畢赛不!
在解密時(shí)盼理,private_key.p12文件需要和這里設(shè)置的密碼配合使用,因此需要牢記此密碼
- 生成供Java使用的公鑰rsa_public_key.pem
openssl rsa -in private_key.pem -out rsa_public_key.pem -pubout
- 生成供Java使用的私鑰pkcs8_private_key.pem
openssl pkcs8 -topk8 -in private_key.pem -out pkcs8_private_key.pem -nocrypt
全部執(zhí)行成功后俄删,會(huì)生成如下文件,其中public_key.der和private_key.p12就是iOS需要用到的文件奏路,如下圖:
二畴椰、將文件導(dǎo)入工程使用
1.新建工程, 并導(dǎo)入Security.framework框架, 如下圖:
2.導(dǎo)入秘鑰文件
導(dǎo)入.der和.p12格式的秘鑰文件, 如下圖:
用下面的方法導(dǎo)入
3.新建用于加密、解密的類RSAEncryptor, 并實(shí)現(xiàn)相關(guān)方法
新建RSAEncryptor類, 如下圖:
4鸽粉、導(dǎo)入#import "RSA.h"文件
5斜脂、實(shí)現(xiàn)代碼