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