加密工具類,提供RSA & AES & DES 等加密解密方法

github項目地址 https://github.com/XHTeng/XHCryptorTools

工具類介紹

框架從 CryptoExercise(蘋果3.0時的包)進行提取擴展
iOS 系統(tǒng)自帶相關(guān)函數(shù)說明疮装,框架主要使用前兩種:
SecKeyEncrypt 使用公鑰對數(shù)據(jù)加密
SecKeyDecrypt 使用私鑰對數(shù)據(jù)解密
SecKeyRawVerify 使用公鑰對數(shù)字簽名進行驗證
SecKeyRawSign 使用私鑰生成數(shù)字簽名

普遍的加密方法:客戶端用RSA的公鑰加密AES的秘鑰,服務(wù)器端用私鑰解開獲得的AES的秘鑰竿屹,客戶端再與服務(wù)器端進行AES加密的數(shù)據(jù)傳輸盾鳞,即HTTPS協(xié)議傳輸?shù)脑?/h4>

加密解密概念

  • 對稱加密算法:加密解密都使用相同的秘鑰,速度快诡挂,適合對大數(shù)據(jù)加密碎浇,方法有DES,3DES璃俗,AES等

  • 非對稱加密算法
    非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)
    公開密鑰與私有密鑰是一對奴璃,可逆的加密算法,用公鑰加密城豁,用私鑰解密苟穆,用私鑰加密,用公鑰解密,速度慢雳旅,適合對小數(shù)據(jù)加密跟磨,方法有RSA

  • 散列算法(加密后不能解密,上面都是可以解密的)
    用于密碼的密文存儲攒盈,服務(wù)器端是判斷加密后的數(shù)據(jù)
    不可逆加密方法:MD5抵拘、SHA1、SHA256型豁、SHA512

RSA算法原理:

  1. 找出兩個“很大”的質(zhì)數(shù):P & Q(上百位)
    N = P * Q
    M = (P – 1) * (Q – 1)
  2. 找出整數(shù)E僵蛛,E與M互質(zhì),即除了1之外迎变,沒有其他公約數(shù)
  3. 找出整數(shù)D墩瞳,使得 ED 除以 M 余 1,即 (E * D) % M = 1
  4. 經(jīng)過上述準備工作之后氏豌,可以得到:E是公鑰,負責加密D是私鑰热凹,負責解密N負責公鑰和私鑰之間的聯(lián)系
  5. 加密算法泵喘,假定對X進行加密(X ^ E) % N = Y(6)解密算法,根據(jù)費爾馬小定義般妙,可以使用以下公式完成解密(Y ^ D) % N = X

使用方法

XHCryptorTools *tools = [[XHCryptorTools alloc] init];
// 1. 加載公鑰
NSString *pubPath = [[NSBundle mainBundle] pathForResource:@"rsacert.der" ofType:nil];
[tools loadPublicKeyWithFilePath:pubPath];
// 2. 使用公鑰加密纪铺,加密內(nèi)容最大長度 117
NSString *result = [tools RSAEncryptString:@"abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghi"];
NSLog(@"RSA 加密 %@", result);
// 3. 加載私鑰,并指定導(dǎo)出 p12 時設(shè)置的密碼
NSString *privatePath = [[NSBundle mainBundle] pathForResource:@"p.p12" ofType:nil];
[tools loadPrivateKey:privatePath password:@"123"];
// 4. 使用私鑰解密
NSLog(@"解密結(jié)果 %@", [tools RSADecryptString:result]);

公鑰碟渺、私鑰生成

公鑰:就是簽名機構(gòu)簽完給我們頒發(fā)的鲜锚,放在網(wǎng)站的根目錄上,可以分發(fā)
私鑰:一般保存在中心服務(wù)器

加密解密使用了兩種文件 .p12是私鑰 .der是公鑰苫拍,終端命令生成步驟如下:
  1. 創(chuàng)建私鑰芜繁,生成安全強度是512(也可以是1024)的RAS私鑰,.pem是base64的證書文件
    openssl genrsa -out private.pem 512
  2. 生成一個證書請求绒极,生成證書請求文件.csr
    openssl req -new -key private.pem -out rsacert.csr

終端提示如下:

  • 國家名字骏令、代碼
  • 省的名字
  • 城市的名字
  • 公司的名字
  • 公司的單位
  • 我的名字
  • 電子郵件
  • 以及兩個附加信息可以跳過
生成證書請求界面
  1. 簽名,找證書頒發(fā)機構(gòu)簽名垄提,證明證書合法有效的榔袋,也可以自簽名一個證書
    生成證書并簽名,有效期10年铡俐,生成一個.crt的一個base64公鑰文件
    openssl x509 -req -days 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt
    由于iOS開發(fā)時使用的時候不能是base64的凰兑,必須解成二進制文件!

  2. 解成.der公鑰二進制文件审丘,放程序做加密用
    openssl x509 -outform der -in rsacert.crt -out rsacert.der

  3. 生成.p12二進制私鑰文件
    .pem 是base64的不能直接使用吏够,必須導(dǎo)成.p12信息交換文件用來傳遞秘鑰
    openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt
    輸入一個導(dǎo)出密碼(框架中l(wèi)oadPrivateKey:方法的password參數(shù)需要用的密碼):

    輸入導(dǎo)出密碼界面.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子稿饰,更是在濱河造成了極大的恐慌锦秒,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喉镰,死亡現(xiàn)場離奇詭異旅择,居然都是意外死亡,警方通過查閱死者的電腦和手機侣姆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門生真,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人捺宗,你說我怎么就攤上這事柱蟀。” “怎么了蚜厉?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵长已,是天一觀的道長。 經(jīng)常有香客問我昼牛,道長术瓮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任贰健,我火速辦了婚禮胞四,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘伶椿。我一直安慰自己辜伟,他們只是感情好,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布脊另。 她就那樣靜靜地躺著导狡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪尝蠕。 梳的紋絲不亂的頭發(fā)上烘豌,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音看彼,去河邊找鬼廊佩。 笑死,一個胖子當著我的面吹牛靖榕,可吹牛的內(nèi)容都是我干的标锄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼茁计,長吁一口氣:“原來是場噩夢啊……” “哼料皇!你這毒婦竟也來了谓松?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤践剂,失蹤者是張志新(化名)和其女友劉穎鬼譬,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逊脯,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡优质,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了军洼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巩螃。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖匕争,靈堂內(nèi)的尸體忽然破棺而出避乏,到底是詐尸還是另有隱情,我是刑警寧澤甘桑,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布拍皮,位于F島的核電站,受9級特大地震影響跑杭,放射性物質(zhì)發(fā)生泄漏春缕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一艘蹋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧票灰,春花似錦女阀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至惹盼,卻和暖如春庸汗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背手报。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工蚯舱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人掩蛤。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓枉昏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親揍鸟。 傳聞我的和親對象是個殘疾皇子兄裂,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容