zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    原根
    FFT
    bzoj3991[SDOI2015]寻宝游戏
    bzoj3990[SDOI2015]排序
    序列自动机
    bzoj4032[HEOI2015]最短不公共子串
    2015.8.28 字符串
    bzoj2821作诗
    bzoj2741【FOTILE模拟赛】L
    一个牛人给java初学者的建议
  • 原文地址:https://www.cnblogs.com/yanhui1995/p/13396362.html
Copyright © 2011-2022 走看看