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

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

猜你喜欢

转载自www.cnblogs.com/yanhui1995/p/13396362.html