iOS RSA加簽 驗(yàn)簽 與Java同步 pkcs8 pkcs1

先簡單介紹一下RSA。
1.加密、解密:使用公鑰對(duì)數(shù)據(jù)進(jìn)行加密,通過私鑰對(duì)加密后的數(shù)據(jù)解密。
2.加簽、解簽:使用私鑰對(duì)數(shù)據(jù)進(jìn)行簽名,通過加簽名的數(shù)據(jù)和公鑰進(jìn)行數(shù)據(jù)驗(yàn)證,以確認(rèn)合法性。

網(wǎng)上RSA相關(guān)的代碼、文章有很多,這篇文章主要是提醒iOS開發(fā)者,注意pkcs8是用于java的,如果后端只給了你私鑰,你要先判斷一下這個(gè)私鑰匙是不是iOS支持的pkcs1。

后端給了我一個(gè).pem 文件,我按照網(wǎng)上的方法,通過終端使用openssl命令生成.csr文件,在這一步報(bào)錯(cuò)了,原因是這個(gè).pem 文件密鑰格式是pkcs8??梢酝ㄟ^用文本編輯器打開這個(gè).pem格式的文件,判斷一下密鑰的長度。在線計(jì)算字符串長度<< 點(diǎn)這里(注意刪除空格)。如果是按1024取模(通常都是1024),pkcs1格式的私鑰長度應(yīng)該是824(包含回車)。如果是pkcs8的格式的密鑰長度為861。如果你的密鑰長度不是824,就說明它不是iOS支持的按1024取模的pkcs1格式,你需要轉(zhuǎn)換格式。

終端命令如下。

openssl pkcs8 -in pkcs8_private_key.pem -nocrypt -out pkcs1_private_key.pem

轉(zhuǎn)換后你可以檢查一下,這個(gè)pkcs1文件的密鑰長度是不是824。

接下來就可以通過openssl生成 .csr -> .ctr -> .p12 ,這個(gè)步驟后邊會(huì)有,從別人那邊復(fù)制過來的。加簽的代碼我就不貼了,git上一大把,這篇文章主要是提醒iOS開發(fā)者,注意pkcs8與pkcs1的轉(zhuǎn)換。

轉(zhuǎn)換流程我走了一遍,可以看這里 >> pkcs8與pkcs1格式互轉(zhuǎn)。

openssl RSA 常用命令

一、使用openssl生成所需秘鑰文件
  生成環(huán)境是在mac系統(tǒng)下,使用openssl進(jìn)行生成,首先打開終端,按下面這些步驟依次來做:

  1. 生成模長為1024bit的私鑰文件private_key.pem
openssl genrsa -out private_key.pem 1024
  1. 生成證書請(qǐng)求文件rsaCertReq.csr
openssl req -new -key private_key.pem -out rsaCerReq.csr

注意:這一步會(huì)提示輸入國家、省份、mail等信息,可以根據(jù)實(shí)際情況填寫,或者全部不用填寫,直接全部敲回車.

  1. 生成證書rsaCert.crt,并設(shè)置有效時(shí)間為10年
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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容