ios中AES、MD5、Base64、RSA、國(guó)密 sm2加密

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加密,這是一種單向加密
壓縮性:任意長(zhǎng)度的數(shù)據(jù),算出的MD5值長(zhǎng)度都是固定的
容易計(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)境下傳遞較長(zhǎng)的標(biāo)識(shí)信息。例如,在Java Persistence系統(tǒng)Hibernate中,就采用了Base64來將一個(gè)較長(zhǎng)的唯一標(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ù)長(zhǎng)度會(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、生成模長(zhǎng)為1024bit的私鑰文件private_key.pem

openssl genrsa -out private_key.pem 1024

  1. 生成證書請(qǐng)求文件rsaCertReq.csr

openssl req -new -key private_key.pem -out rsaCerReq.csr
注意:這一步會(huì)提示輸入國(guó)家、省份、mail等信息,可以根據(jù)實(shí)際情況填寫,或者全部不用填寫,直接全部敲回車

  1. 生成證書rsaCert.crt,并設(shè)置有效時(shí)間為1年

openssl x509 -req -days 3650 -in rsaCerReq.csr -signkey private_key.pem -out rsaCert.crt

  1. 生成供iOS使用的公鑰文件public_key.der

openssl x509 -outform der -in rsaCert.crt -out public_key.der

  1. 生成供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è)置的密碼配合使用,因此需要牢記此密碼

  1. 生成供Java使用的公鑰rsa_public_key.pem

openssl rsa -in private_key.pem -out rsa_public_key.pem -pubout

  1. 生成供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)入
屏幕快照 2018-08-31 下午5.26.43.png

3.新建用于加密、解密的類RSAEncryptor, 并實(shí)現(xiàn)相關(guān)方法
新建RSAEncryptor類, 如下圖:



4、導(dǎo)入#import "RSA.h"文件

下載鏈接

5、實(shí)現(xiàn)代碼


5、國(guó)密 sm2加密解密
demo下載地址
參考鏈接
加密原理介紹

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 之前的項(xiàng)目中接觸過一些加密的方法,也沒有太仔細(xì)的進(jìn)行記錄和研究。最近在寫SDK時(shí),加密模塊的占比相當(dāng)之大;借此時(shí)機(jī)...
    過半_e764閱讀 698評(píng)論 0 0
  • 先暴露一下自己的年齡,已工作3年以上。普通員工一枚,非成功人士,但也算是經(jīng)歷過了。自省總結(jié)了一點(diǎn)職場(chǎng)經(jīng)驗(yàn)想跟小鮮...
    momooo閱讀 313評(píng)論 0 0
  • 默認(rèn)情況下hive訪問不到子目錄下面數(shù)據(jù)的問題 我們通過把hdp的數(shù)據(jù)遷移到了cdh,然后發(fā)現(xiàn)一些hive表存儲(chǔ)的...
    LOC_Thomas閱讀 3,228評(píng)論 0 1
  • 日念家人一好處,念力加持享幸福! 【先生好】他說這輩子最倒霉的事就是認(rèn)識(shí)我!傷人吧!那我也不能把錢投到毫無保障的項(xiàng)...
    風(fēng)瀟瀟blj閱讀 167評(píng)論 0 0
  • 五樓的陽臺(tái)上 月亮品著茶香 酷暑已經(jīng)離去 來了秋風(fēng)微涼 五樓的陽臺(tái)上 月亮度著時(shí)光 讀起關(guān)關(guān)雎鳩 重回水木年華 五...
    木貞ma閱讀 437評(píng)論 1 2

友情鏈接更多精彩內(nèi)容