iOS本地生成RSA密鑰字符串

前言

? ?最近公司的項目要使用RSA加密的方式峦萎,需要客戶端本地生成公鑰和私鑰,將公鑰發(fā)送給服務器忆首,服務器使用公鑰進行加密爱榔,把加密的結果返給客戶端,客戶端使用自己生成的秘鑰進行解密糙及,我在網上查閱了大量的資料详幽,但是大多是利用公鑰私鑰文件,或者直接接收RSA公私鑰字符串進行加密解密,沒有生成并轉換成字符串唇聘,這里就介紹一下我是如何實現這個功能的版姑,以后備用。

一迟郎、OpenSSL環(huán)境搭建

詳情請參照:OpenSSL的下載地址;

導入OpenSSL庫的參照地址:導入OpenSSL項目配置地址

二漠酿、生成密鑰字符串

1、頭文件引入

#import<openssl/rsa.h>谎亩、#import<openssl/pem.h>

2炒嘲、生成密鑰對

rsa =RSA_generate_key(1024,0x10001,NULL,NULL)

? ? 在這里需要說明以下,加密長度是1024位匈庭。加密長度是指理論上最大允許”被加密的信息“長度的限制夫凸,也就是明文的長度限制。隨著這個參數的增大(比方說2048)阱持,允許的明文長度也會增加夭拌,但同時也會造成計算復雜度的極速增長。一般推薦的長度就是1024位(128字節(jié))衷咽。

? ?由于我并沒有在框架中找到方法轉換出密鑰字符串鸽扁,所以這里用了個比較笨拙的方法,將公鑰私鑰保存為txt文件镶骗,然后將這個txt文件讀出桶现,讀出后就是需要的字符串了。

3鼎姊、設置路徑:

NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)objectAtIndex:0];

4骡和、提取公鑰字符串:

NSString*pubPath=[documentsPathstringByAppendingPathComponent:@"PubFile.txt"];

FILE* pubWrite =NULL;

pubWrite =fopen([pubPathUTF8String],"wb");

if(pubWrite==NULL){

NSLog(@"ReadFiled.");

else{

PEM_write_RSA_PUBKEY(pubWrite,rsa);

fclose(pubWrite);

}

5、提取私鑰字符串:

NSString*priPath=[documentsPathstringByAppendingPathComponent:@"PriFile.txt"];

FILE*priWtire=NULL;

priWtire=fopen([priPathUTF8String],"wb");

EVP_PKEY*pkey=NULL;

if(priWtire ==NULL){

NSLog(@"ReadFiled.");

}else{

pkey =EVP_PKEY_new();

EVP_PKEY_assign_RSA(pkey, rsa);

PEM_write_PKCS8PrivateKey(priWtire, pkey,NULL,NULL,0,0,NULL);fclose(priWtire);

}

6相寇、對字符串進行處理得到自己想要的字符串: ?

NSString*str=[NSStringstringWithContentsOfFile:pubPathencoding:NSUTF8StringEncodingerror:nil];

str = [strstringByReplacingOccurrencesOfString:@"-----BEGIN

PUBLIC KEY-----"withString:@""];

str = [strstringByReplacingOccurrencesOfString:@"-----END

PUBLIC KEY-----"withString:@""];

str = [strstringByReplacingOccurrencesOfString:@"\n"withString:@""];

? ? ?這篇文章并沒有對原理進行剖析慰于,只是說明了一下使用方法,而且使用方法不是很好唤衫,我想框架中應該也有可以實現的方法婆赠,但是目前還沒有找到,如果有哪位朋友找到了佳励,一定要記得私信告訴我休里,謝謝

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市植兰,隨后出現的幾起案子份帐,更是在濱河造成了極大的恐慌,老刑警劉巖楣导,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件废境,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機噩凹,發(fā)現死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門巴元,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人驮宴,你說我怎么就攤上這事逮刨。” “怎么了堵泽?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵修己,是天一觀的道長。 經常有香客問我迎罗,道長睬愤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任纹安,我火速辦了婚禮尤辱,結果婚禮上,老公的妹妹穿的比我還像新娘厢岂。我一直安慰自己光督,他們只是感情好,可當我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布塔粒。 她就那樣靜靜地躺著结借,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窗怒。 梳的紋絲不亂的頭發(fā)上映跟,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天,我揣著相機與錄音扬虚,去河邊找鬼。 笑死球恤,一個胖子當著我的面吹牛辜昵,可吹牛的內容都是我干的。 我是一名探鬼主播咽斧,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼堪置,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了张惹?” 一聲冷哼從身側響起舀锨,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎宛逗,沒想到半個月后坎匿,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年替蔬,在試婚紗的時候發(fā)現自己被綠了告私。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡承桥,死狀恐怖驻粟,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情凶异,我是刑警寧澤蜀撑,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站剩彬,受9級特大地震影響屯掖,放射性物質發(fā)生泄漏。R本人自食惡果不足惜襟衰,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一贴铜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瀑晒,春花似錦绍坝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至玖详,卻和暖如春把介,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蟋座。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工拗踢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人向臀。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓巢墅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親券膀。 傳聞我的和親對象是個殘疾皇子君纫,可洞房花燭夜當晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內容

  • 嘟噥嘟噥:最近接到一個任務:在客戶端動態(tài)生成RSA密鑰對,然后向服務器發(fā)送這個密鑰對中的公鑰字符串芹彬,由服務器進行公...
    TimmyR閱讀 8,037評論 19 21
  • /**ios常見的幾種加密方法: 普通的加密方法是講密碼進行加密后保存到用戶偏好設置( [NSUserDefaul...
    彬至睢陽閱讀 2,935評論 0 7
  • 前言 最近公司的項目要使用RSA加密的方式蓄髓,需要客戶端本地生成公鑰和私鑰,我在網上查閱了大量的資料舒帮,但是大多是利用...
    HRSLN閱讀 4,772評論 0 3
  • 我校項目啟動事件:2015年3月26日 阿信老師帶領胥江老師對同輝(國際)學校的十個實驗班的班主任老師進行有關培訓...
    蕾蕾lcm閱讀 798評論 0 0
  • http://www.basicae.com/probox.asp?id=2 http://www.hikeyte...
    dyg540閱讀 316評論 0 0