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