【问题标题】:How to convert private key in PKCS#8 format to PKCS#1 format with M2Crypto如何使用 M2Crypto 将 PKCS#8 格式的私钥转换为 PKCS#1 格式
【发布时间】:2016-11-01 13:41:56
【问题描述】:

我有一个 PKCS #8 格式的私钥。我看到以下标签样式:

    -----BEGIN PRIVATE KEY-----
     xxxx
    -----END PRIVATE KEY-----

我想将其转换为带有如下标签的 PKCS #1 格式:

    -----BEGIN RSA PRIVATE KEY-----
    xxxxxx
    -----END RSA PRIVATE KEY-----

有没有办法使用 M2Crypto 做到这一点?

如果我使用 openssl 命令进行转换:

    openssl rsa -in originalkey.pem -out newkey.pem

我收到一个错误:

    unable to load Private Key
    3071661804:error:0D078079:asn1 encoding routines:ASN1_ITEM_EX_D2I:field missing:tasn_dec.c:501:Field=d, Type=RSA
    3071661804:error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib:rsa_ameth.c:115:
    3071661804:error:0606F091:digital envelope routines:EVP_PKCS82PKEY:private key decode error:evp_pkey.c:95:
    3071661804:error:0907B00D:PEM routines:PEM_READ_BIO_PRIVATEKEY:ASN1 lib:pem_pkey.c:132:

知道这个错误是什么意思吗?

【问题讨论】:

    标签: python cryptography rsa private-key m2crypto


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:
      #rsa key
      cat pkcs8.pem | openssl rsa 2>/dev/null
      
      #ec key
      cat pkcs8.pem | openssl ec 2>/dev/nul
      

      【讨论】:

      • 这是答案还是问题?
      • 社区encourages 在代码旁边添加解释,而不是纯粹基于代码的答案。正如here 所解释的那样:“虽然此代码可能会回答问题,但提供有关 为什么 和/或 如何 此代码回答问题的附加上下文会提高其长期价值。 "另外,请查看formatting help page 以改进您的格式。
      • 感谢您提供答案。您能否编辑您的答案以包括对您的代码的解释?这将有助于未来的读者更好地了解正在发生的事情,尤其是那些刚接触该语言并难以理解概念的社区成员。
      猜你喜欢
      • 1970-01-01
      • 2018-08-04
      • 2011-02-26
      • 1970-01-01
      • 2016-09-30
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 2016-06-06
      相关资源
      最近更新 更多