ios中AES、MD5、Base64、RSA、國密 sm2加密

1、AES加密

導入NSData+AES.h文件
下載鏈接

這里AES在iOS加過密以后以nsdata的形式存下來,如果想以nsstring形式存儲,那么對nsdata進行base64位編碼。
[測試AES的加密和解密的工具]http://tool.chacuo.net/cryptaes)

加密介紹

2、MD5加密

下載鏈接

MD5加密,這是一種單向加密
壓縮性:任意長度的數據,算出的MD5值長度都是固定的
容易計算:從原數據計算出MD5值很容易
抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所得到的MD5值都有很大區別。
強抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即偽造數據)是非常困難的。
測試MD5的加密和解密的工具

3、Base64加密

下載鏈接

Base64是網絡上最常見的用于傳輸8Bit字節代碼的編碼方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的詳細規范。Base64編碼可用于在HTTP環境下傳遞較長的標識信息。例如,在Java Persistence系統Hibernate中,就采用了Base64來將一個較長的唯一標識符(一般為128-bit的UUID)編碼為一個字符串,用作HTTP表單和HTTP GET URL中的參數。在其他應用程序中,也常常需要把二進制數據編碼為適合放在URL(包括隱藏表單域)中的形式。此時,采用Base64編碼具有不可讀性,即所編碼的數據不會被人用肉眼所直接看到。

基本原理:
原本是 8個bit 一組表示數據,改為 6個bit一組表示數據,不足的部分補零,每 兩個0 用 一個 = 表示
用base64 編碼之后,數據長度會變大,增加了大約 1/3 左右.(8-6)/6
可進行反向解密
Xcode7.0 之后出現的
編碼有個非常顯著的特點,末尾有個 = 號

4、RSA加密

一、使用openssl生成所需秘鑰文件
  生成環境是在mac系統下,使用openssl進行生成,首先打開終端,按下面這些步驟依次來做:
1、生成模長為1024bit的私鑰文件private_key.pem

openssl genrsa -out private_key.pem 1024

  1. 生成證書請求文件rsaCertReq.csr

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

  1. 生成證書rsaCert.crt,并設置有效時間為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
注意:這一步會提示給私鑰文件設置密碼,直接輸入想要設置密碼即可,然后敲回車,然后再驗證剛才設置的密碼,再次輸入密碼,然后敲回車,完畢!
在解密時,private_key.p12文件需要和這里設置的密碼配合使用,因此需要牢記此密碼

  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
全部執行成功后,會生成如下文件,其中public_key.der和private_key.p12就是iOS需要用到的文件,如下圖:


二、將文件導入工程使用
1.新建工程, 并導入Security.framework框架, 如下圖:



2.導入秘鑰文件
導入.der和.p12格式的秘鑰文件, 如下圖:



用下面的方法導入
屏幕快照 2018-08-31 下午5.26.43.png

3.新建用于加密、解密的類RSAEncryptor, 并實現相關方法
新建RSAEncryptor類, 如下圖:



4、導入#import "RSA.h"文件

下載鏈接

5、實現代碼


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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • /**ios常見的幾種加密方法: 普通的加密方法是講密碼進行加密后保存到用戶偏好設置( [NSUserDefaul...
    彬至睢陽閱讀 3,018評論 0 7
  • 之前的項目中接觸過一些加密的方法,也沒有太仔細的進行記錄和研究。最近在寫SDK時,加密模塊的占比相當之大;借此時機...
    過半_e764閱讀 606評論 0 0
  • 先暴露一下自己的年齡,已工作3年以上。普通員工一枚,非成功人士,但也算是經歷過了。自省總結了一點職場經驗想跟小鮮...
    momooo閱讀 267評論 0 0
  • 默認情況下hive訪問不到子目錄下面數據的問題 我們通過把hdp的數據遷移到了cdh,然后發現一些hive表存儲的...
    LOC_Thomas閱讀 3,191評論 0 1
  • 日念家人一好處,念力加持享幸福! 【先生好】他說這輩子最倒霉的事就是認識我!傷人吧!那我也不能把錢投到毫無保障的項...
    風瀟瀟blj閱讀 147評論 0 0