關(guān)于RSA加解密的一些使用經(jīng)驗(yàn)

RSA加密算法是一種非對(duì)稱的加密算法,使用時(shí)需要一對(duì)密鑰(yue),公鑰用來(lái)加密乾胶,私鑰用來(lái)解密。關(guān)于RSA的的特性和優(yōu)缺點(diǎn)大家可以度娘或者谷歌朽寞。這篇文章主要介紹java后臺(tái)识窿,安卓與iOS三個(gè)平臺(tái)的需要的密鑰的生成以及iOS端的使用。

前幾天趕項(xiàng)目脑融,有一個(gè)需求是關(guān)于RSA加密的喻频,關(guān)于RSA加密我只是有所耳聞,沒(méi)有實(shí)際使用過(guò)肘迎,于是照葫蘆畫瓢使用公司庫(kù)里的RSA加解密工具甥温,按理說(shuō)在之前的項(xiàng)目中使用Key字符串的形式是可以加解密成功的,可我嘗試使用base64編碼格式的私鑰和pkcs8編碼格式的私鑰都無(wú)法解出公鑰加密的密文妓布。俗話說(shuō)不能一條路走到黑姻蚓,所以我就果斷轉(zhuǎn)向嘗試使用密鑰文件來(lái)解決這個(gè)問(wèn)題,所幸最終還是找到解決了這個(gè)問(wèn)題匣沼。如以上所說(shuō)問(wèn)題在于—后臺(tái)給的密鑰編碼格式與iOS開發(fā)需要的格式不符合狰挡。定位到問(wèn)題后開始解決問(wèn)題。

由于生成的密鑰需要在不同的平臺(tái)上使用,首先明確不同的平臺(tái)需要什么編碼格式的密鑰圆兵,在我的這個(gè)項(xiàng)目中,有iOS,Andriod兩個(gè)客戶端平臺(tái)以及Java后臺(tái)枢贿,其中iOS需要p12編碼格式的私鑰殉农,der編碼格式的公鑰;Andriod和Java需要base64編碼的公鑰局荚,pkcs8編碼格式的私鑰超凳。至于其他的平臺(tái)如PHP,前端由于在這個(gè)項(xiàng)目中用不上耀态,就沒(méi)有具體了解轮傍。需要的同學(xué)自行查閱資料。

明確需求后使用openssl生成適當(dāng)編碼格式的密鑰首装,Mac自帶openssl创夜,只需在終端打開即可,Windows系統(tǒng)需要下載openssl仙逻,以下介紹生成密鑰的過(guò)程驰吓。

在生成密鑰之前最好在桌面建立一個(gè)文件夾,然后在終端cd到這個(gè)文件夾系奉,之后生成的文件都會(huì)放到這個(gè)文件夾中檬贰,便于管理,生成文件的過(guò)程中也可以在文件夾中直觀的觀察到缺亮。

1翁涤、終端打開openssl

openssl

2、生成pem(base64)編碼格式的私鑰萌踱,密鑰強(qiáng)度為1024葵礼,即需要加密的字符串長(zhǎng)度不能超過(guò)1024字節(jié)

genrsa -out atrsa_private_key.pem 1024

3、生成per(base64)編碼格式的公鑰并鸵,這個(gè)公鑰可以在Andriod和Java平臺(tái)使用

rsa -in atrsa_private_key.pem -pubout -out atrsa_public_key.pem

4章咧、對(duì)私鑰進(jìn)行PKCS8編碼,此時(shí)生成的pkcs8_atrsa_private_key.pem文件內(nèi)的私鑰可以提供給Java和Android使用

pkcs8 -topk8 -in atrsa_private_key.pem -out pkcs8_atrsa_private_key.pem -nocrypt

5能真、以上生成的密鑰文件通過(guò)用文本編輯器打開赁严,拷貝對(duì)應(yīng)的密鑰就可以給Java和Andriod使用,下面介紹供iOS使用的密鑰的生成過(guò)程粉铐。首先創(chuàng)建證書請(qǐng)求疼约,這里并不是真的生成了證書,只是發(fā)送了一個(gè)請(qǐng)求

req -new -out atrsacert.csr -key atrsa_private_key.pem

按照要求輸入相應(yīng)信息就行蝙泼,密碼可以為空程剥,我是將密碼設(shè)置為空,因?yàn)槲也淮_定Java和Andriod平臺(tái)是否有解密的方法。

6织鲸、生成證書并簽名

x509 -req -days 3650 -in atrsacert.csr -signkey atrsa_private_key.pem -out atrsacert.crt

7舔腾、轉(zhuǎn)換格式,將PEM 格式文件轉(zhuǎn)換成 DER 格式搂擦,這里生成的就是iOS開發(fā)中需要用到的公鑰文件

x509 -outform der -in atrsacert.crt -out atrsacert.der

8稳诚、導(dǎo)出P12文件,也就是需要用到的私鑰文件

pkcs12 -export -out atrsa_private_key.p12 -inkey atrsa_private_key.pem -in atrsacert.crt

自此瀑踢,iOS,Android扳还,Java需要的密鑰生成完畢,如下圖所示

其中pkcs8_atrsa_private_key.pem和atrsa_public_key.pem通過(guò)文本編輯方式打開后的數(shù)據(jù)如圖二所示橱夭,交給Java和Andriod即可氨距,如下圖所示:

解決了根本的問(wèn)題,在iOS中使用這些密鑰文件就很簡(jiǎn)單了棘劣,首先將der格式的公鑰和p12格式的私鑰導(dǎo)入工程俏让。然后如下圖使用就可以完成:

關(guān)于這個(gè)工具類,是我在網(wǎng)上搜到有前輩從GitHub上轉(zhuǎn)過(guò)來(lái)的茬暇,我把那個(gè)網(wǎng)址給忘了舆驶,實(shí)在是不好意思,在此對(duì)ATRSATool的原作者致謝而钞。

為了方便大家沙廉,我把工具類上傳到了GitHub,地址如下臼节,需要的話可以去下載

https://github.com/ZZJJLL/ATRSATool.git

參考鏈接如下撬陵,也感謝提供這些資料的作者。

http://www.reibang.com/p/bb2bd32e8794

http://zhidao.baidu.com/link?url=n5ZLviDfCkwnUB720kBK9QBDNcM05ViPaMoCsG0GzoV1NEE2eYNa6TJU6WeQ5RNrC_8-1BBnTvPohDmYvg7ZyxR9ABO4cov9Jst_asrsbIq

http://blog.csdn.net/jdsjlzx/article/details/41441147

本人對(duì)于RSA只了解一些皮毛网缝,以上如有不正確的地方還望各位指正巨税。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市粉臊,隨后出現(xiàn)的幾起案子草添,更是在濱河造成了極大的恐慌,老刑警劉巖扼仲,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件远寸,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡屠凶,警方通過(guò)查閱死者的電腦和手機(jī)驰后,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)矗愧,“玉大人灶芝,你說(shuō)我怎么就攤上這事。” “怎么了夜涕?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵犯犁,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我女器,道長(zhǎng)酸役,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任晓避,我火速辦了婚禮簇捍,結(jié)果婚禮上只壳,老公的妹妹穿的比我還像新娘俏拱。我一直安慰自己,他們只是感情好吼句,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布锅必。 她就那樣靜靜地躺著,像睡著了一般惕艳。 火紅的嫁衣襯著肌膚如雪搞隐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天远搪,我揣著相機(jī)與錄音劣纲,去河邊找鬼。 笑死谁鳍,一個(gè)胖子當(dāng)著我的面吹牛癞季,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播倘潜,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼绷柒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了涮因?” 一聲冷哼從身側(cè)響起废睦,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎养泡,沒(méi)想到半個(gè)月后嗜湃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡澜掩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年净蚤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片输硝。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡今瀑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情橘荠,我是刑警寧澤屿附,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站哥童,受9級(jí)特大地震影響挺份,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜贮懈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一匀泊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧朵你,春花似錦各聘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至忌傻,卻和暖如春大脉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背水孩。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工镰矿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俘种。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓秤标,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親安疗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子抛杨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

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

  • 嘟噥嘟噥:最近接到一個(gè)任務(wù):在客戶端動(dòng)態(tài)生成RSA密鑰對(duì),然后向服務(wù)器發(fā)送這個(gè)密鑰對(duì)中的公鑰字符串荐类,由服務(wù)器進(jìn)行公...
    TimmyR閱讀 8,033評(píng)論 19 21
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理怖现,服務(wù)發(fā)現(xiàn),斷路器玉罐,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • MD5加密是單向的茫船,只能加密不能解密(破解除外)琅束。標(biāo)題可能會(huì)引起讀者誤解,已經(jīng)改正算谈,感謝Li_Cheng同學(xué)的提醒...
    奮斗ing0310閱讀 1,203評(píng)論 1 13
  • 更新:MD5加密是單向的屿岂,只能加密不能解密(破解除外)。標(biāo)題可能會(huì)引起讀者誤解鲸匿,已經(jīng)改正爷怀,感謝Li_Cheng同學(xué)...
    葛高召閱讀 2,247評(píng)論 0 4
  • 做產(chǎn)品這行之后VS之前,面對(duì)同樣的問(wèn)題晒骇,答案有了一些變化霉撵,對(duì)某些答案的理解也更透徹磺浙。接觸這行之前洪囤,會(huì)去知乎bbs博...
    幺九閱讀 484評(píng)論 0 4