openssl RSA 秘鑰格式 pkcs1 和 pkcs8相互轉換


PKCS

  The Public-Key Cryptography Standards (PKCS)是由美國RSA數據安全公司及其合作伙伴制定的一組公鑰密碼學標准,其中包括證書申請、證書更新、證書作廢表發布、擴展證書內容以及數字簽名數字信封的格式等方面的一系列相關協議。

eg: pkcs1 私鑰內容 base64 得到數組, 48 (RSA 標示第一字節), 130 (長度占用字節描述方式,長度計算方式,如果小於128,自身表示長度值,否則與127進行與運算,得到的結果為長度,但與運算后的長度不得大於3,例如130表示長度占2位), 4, 163 (長度值,4*256+163, 此處的長度值為該字節之后的所有字節數,且需要驗證通過), 2 (RSA 私鑰證書固定字節), 1 (長度), 0 ( RSA 描述頭結束,該字節必須為0), 2 (PKCS1 長度開始標示), 130 (長度占用字節描述方式), 1, 1 (長度值), 0, ...(長度256,連續0為填充內容,  RSAParameters.Modulus 數據) , 2 (PKCS1 長度開始標示), 3 (長度占用字節描述方式), 1, 0, 1 ( RSAParameters.Exponent 數據), 2 (PKCS1 長度開始標示), 130 (長度占用字節描述方式), 1, 0 (長度值), ... (長度256, RSAParameters.D 數據), 2 (PKCS1 長度開始標示), 129, 129 (長度占用字節描述方式 ), 0, ... (長度128)后省略3次

 

1. openssl 生成pkcs1 格式的私鑰  秘鑰長度:1024

openssl genrsa -out private.pem 1024

 

2. PKCS1私鑰轉換為PKCS8

openssl pkcs8 -topk8 -inform PEM -in private.pem -outform pem -nocrypt -out pkcs8.pem

 

3. PKCS8格式私鑰再轉換為PKCS1格式

openssl rsa -in pkcs8.pem -out pkcs1.pem

 

4. 從pkcs1私鑰中生成pkcs8公鑰

openssl rsa -in private.pem -pubout -out public.pem

 

5. 從pkcs8私鑰中生成pkcs8公鑰

openssl rsa -in pkcs8.pem -pubout -out public_pkcs8.pem

 

6. pkcs8公鑰轉pkcs1公鑰

openssl rsa -pubin -in public.pem -RSAPublicKey_out

 

7. pkcs1公鑰轉換為pkcs8公鑰

openssl rsa -RSAPublicKey_in -in pub_pkcs1.pem -pubout

 

python 使用 crypto  pypi : https://pypi.org/project/pycrypto/

 

參考的博客地址: https://www.cnblogs.com/cocoajin/p/10510574.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM