iOS RSA加解密簽名和驗證

RSA通過終端openssl指令生成.derp12的證書的加解密就不說了挂洛,太多了

pre:在公司負責了一個項目梢杭,需要用到iOS RSA驗證簽名的功能彤灶。后臺給我的僅僅是一個公鑰的字符串询张。經(jīng)過起初的一段時間的掙扎,發(fā)現(xiàn)遠遠沒有那么簡單橄浓。iOS RSA是需要證書的,而java的后臺只能給我一個公鑰字符串亮航。搜索了無數(shù)網(wǎng)頁還是沒找到能用的成型的代碼荸实。最后還是參考了下支付寶的SDK的簽名機制,明白可以先把公鑰字符串寫入文件然后讀取文件得到openssl 中的RSA結構體指針〗闪埽現(xiàn)在精心整理了下iOS RSA使用openssll的加密准给,解密,簽名和驗證簽名的實現(xiàn)重抖。代碼地址https://github.com/HustBroventure/iOSRSAHandler

1生成RSA密鑰

生成RSA私鑰
openssl genrsa -out rsa_private_key.pem 1024
生成RSA公鑰
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
pem文件可以直接文本編輯器打開
將RSA私鑰轉換成PKCS8格式
openssl pkcs8 -topk8 -inform PEM -in private_rsa.pem -outform PEM -nocrypt -out private_key.pem (后邊一定要加-out private_key.pem將轉換后的私鑰保存在private_key.pem露氮,不然得到的結果要設置密碼且顯示在終端中,這個和得到pem中的私鑰有差異钟沛。)

2導入OpenSSL畔规,導入HBRSAHandler文件夾

小技巧:拖進去后:librarySearchpath:會自動設置,然后拷貝路徑到headSearchpath恨统,后邊添加/include叁扫。

3使用:

兩種方式導入密鑰然后調(diào)用響相應的方法即可。

NSString* private_key_string = @"MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALgv/syFH337KzC29KvR0p6cP+glRqjDYAQno5ifafXZjgf1EhBjZblKv+HiLAzNBOlYU1PnLuOOkZj6pg1A5HUZLpsbYa5Mwr1bUHALjXLaB3THCpZX51/b5L14erGo52Jv/j/63YljEtMm8ALmkY8S+3fPxFeY7ya+2VXMEtplAgMBAAECgYAguvauZWGpQ37zUy+7cLfa061PlYAu8TkYw+qAbqOnupdQtq4VF3S2LqBWhZiKVcxvovB70nM0oNsisjfb1xJBpyfDBFug7d+y2f8yr6aTOezoY5DBYEF3Svg9Kp9ra+vvAYX/7fh+tHCU0HOvp0z8ikZiRSWZaQ+3A2GiCIJrwQJBAPKVji89hGAMEWLJJFZaPiLBqZUwR2W/rp7Ely5ddKfjcosHhggHfOb71BnrMOm0h4S85Gx6a87n9R2To0c51q0CQQDCX6yYdt/9JGORyNSXfzMfSZyVOrMpIo77R0YwKa3UOwwLA56l2Lc4AYO10/lyAyZCKse2/5D9ZZUB7xoYEmGZAkB8MEJVPuoY/bSc3RqENrjetERsAwZaObJcx4oaC3AgTxmhwV1FmQfBfKTODBDDZE+Ijedm/ZlZmHhtBtstKJgVAkBKma/DgHRtUscIT90QHBjB3F3FhJb4pbPcyzksCQMXXmY73/LG0ktXqnUjlyy4zm6jnIm0OZgrOQ6chGkubfeZAkBMCGF2tPfEJh8XODOvlw5ADnUiq+Qe/abcpKowkiT9zP+rYT9XJAx7QxChjdwTZb6ahnJY1+ny1emEHUOs2fm8";

   NSString* public_key_string = @"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4L/7MhR99+yswtvSr0dKenD/oJUaow2AEJ6OYn2n12Y4H9RIQY2W5Sr/h4iwMzQTpWFNT5y7jjpGY+qYNQOR1GS6bG2GuTMK9W1BwC41y2gd0xwqWV+df2+S9eHqxqOdib/4/+t2JYxLTJvAC5pGPEvt3z8RXmO8mvtlVzBLaZQIDAQAB";  
   NSString *publicKeyFilePath = [[NSBundle mainBundle] pathForResource:@"rsa_public_key.pem" ofType:nil];
   NSString *privateKeyFilePath = [[NSBundle mainBundle] pathForResource:@"rsa_private_key.pem" ofType:nil];
HBRSAHandler* handler = [HBRSAHandler new];
//兩種方式導入
// [handler importKeyWithType:KeyTypePublic andPath:publicKeyFilePath];
       //[handler importKeyWithType:KeyTypePrivate andPath:privateKeyFilePath];
   [handler importKeyWithType:KeyTypePrivate andkeyString:private_key_string];
   [handler importKeyWithType:KeyTypePublic andkeyString:public_key_string];

   NSString* sig = [handler signString:@"簽名字符串"];
   NSString* sigMd5 = [handler signMD5String:@"簽名字符串"];
   NSLog(@"%@      %@",sig,sigMd5);

   BOOL isMatch = [handler verifyString:@"簽名字符串" withSign:sig];
   BOOL isMatchMd5 = [handler verifyMD5String:@"簽名字符串    
   NSLog(@"%d      %d",isMatch,isMatchMd5);

   NSString* enString = [handler encryptWithPublicKey:@"加密字符串"];
   NSString* deString = [handler decryptWithPrivatecKey:enString];
   NSLog(@"%@",deString);

4 結果驗證(注:公鑰加密畜埋,每次加密的結果會不一樣莫绣,但是私鑰簽名的結果每次都一樣)

image
image
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市悠鞍,隨后出現(xiàn)的幾起案子兔综,更是在濱河造成了極大的恐慌,老刑警劉巖狞玛,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件软驰,死亡現(xiàn)場離奇詭異,居然都是意外死亡心肪,警方通過查閱死者的電腦和手機锭亏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來硬鞍,“玉大人慧瘤,你說我怎么就攤上這事戴已。” “怎么了锅减?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵糖儡,是天一觀的道長。 經(jīng)常有香客問我怔匣,道長握联,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任每瞒,我火速辦了婚禮金闽,結果婚禮上,老公的妹妹穿的比我還像新娘剿骨。我一直安慰自己代芜,他們只是感情好,可當我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布浓利。 她就那樣靜靜地躺著挤庇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贷掖。 梳的紋絲不亂的頭發(fā)上嫡秕,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天,我揣著相機與錄音羽资,去河邊找鬼淘菩。 笑死,一個胖子當著我的面吹牛屠升,可吹牛的內(nèi)容都是我干的潮改。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼腹暖,長吁一口氣:“原來是場噩夢啊……” “哼汇在!你這毒婦竟也來了?” 一聲冷哼從身側響起脏答,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤糕殉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后殖告,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阿蝶,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年黄绩,在試婚紗的時候發(fā)現(xiàn)自己被綠了羡洁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡爽丹,死狀恐怖筑煮,靈堂內(nèi)的尸體忽然破棺而出辛蚊,到底是詐尸還是另有隱情,我是刑警寧澤真仲,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布袋马,位于F島的核電站,受9級特大地震影響秸应,放射性物質(zhì)發(fā)生泄漏虑凛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一灸眼、第九天 我趴在偏房一處隱蔽的房頂上張望卧檐。 院中可真熱鬧墓懂,春花似錦焰宣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至榜跌,卻和暖如春闪唆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背钓葫。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工悄蕾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人础浮。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓帆调,卻偏偏與公主長得像,于是被迫代替她去往敵國和親豆同。 傳聞我的和親對象是個殘疾皇子番刊,可洞房花燭夜當晚...
    茶點故事閱讀 43,566評論 2 349

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