生成RSA公私钥

生成步骤

  1. 生成RSA私钥,以X509编码,指定生成的密钥的位数为2048位,该步生成的私钥是PKCS1格式,第二步将私钥转为PKCS#8编码。
openssl genrsa -out rsa_private_key_2048.pem 2048
  1. 将上一步生成的RSA私钥转换成PKCS#8编码,作为最终使用的私钥。
openssl pkcs8 -topk8 -in rsa_private_key_2048.pem -out pkcs8_rsa_private_key_2048.pem -nocrypt
  1. 导出RSA公钥,以X509编码,作为最终交换的公钥。
openssl rsa -in rsa_private_key_2048.pem -out rsa_public_key_2048.pem -pubout

额外说明

  1. 公私钥一般有2种格式,pem和der格式,上面生成的是pem格式

    • der格式为二进制格式,通常不能直接查看,pem是将二进制转为base64格式,并添加头尾
    • PKCS#8编码私钥头尾

       -----BEGIN PRIVATE KEY-----
      
    • PKCS#1编码私钥头尾

       -----BEGIN RSA PRIVATE KEY-----
      
    • PKCS#8编码公钥头尾

       -----BEGIN PUBLIC KEY-----
      
    • 私钥pem格式转der格式(公钥的话需要再增加-pubin选项)
      openssl pkey -inform PEM -outform DER -in rsa_private_key_2048.pem -out rsa_private_key_2048.der
      
    • 私钥der格式转pem格式(公钥的话需要再增加-pubin选项)
      openssl pkey -inform DER -outform PEM -in rsa_private_key_2048.der -out rsa_private_key_2048.pem
      
  2. RSA的密钥一般有2种编码方式,即PKCS#1和PKCS#8

    • 适用范围:
      • PKCS #1 仅适用于 RSA 密钥。
      • PKCS #8 是通用的,可以用于多种密钥类型。
    • 格式头:
      • PKCS #1 PEM 格式头为“-----BEGIN RSA PRIVATE KEY-----”。
      • PKCS #8 未加密的 PEM 格式头为“-----BEGIN PRIVATE KEY-----”,加密的为“-----BEGIN ENCRYPTED PRIVATE KEY-----”。
    • 结构:
      • PKCS #1 直接包含 RSA 私钥参数。
      • PKCS #8 包含一个通用的密钥格式,能够封装不同类型的私钥信息和算法标识符。

生成ED25519公私钥

生成步骤

  1. 生成ed25519私钥
openssl genpkey -algorithm ed25519 -out private.pem
  1. 从私钥中生成公钥
openssl pkey -in private.pem -pubout -out public.pem

额外说明

1.低版本的openssl不支持ed25519算法
2.上面生成的密钥格式也是pem格式,pem格式与der格式的转换参考上面rsa的方式
3.ed25519算法原始的密钥长度是32字节的,但是openssl生成的私钥长度是48位,公钥长度是44位的。原因是openssl在私钥前添加了16位的前缀,公钥添加了12位的前缀,因此如果想要获取原始的32位密钥可以使用如下命令:

cat private_key.der | tail -c 32 | xxd -p
  • 这里使用的是二进制的der格式密钥,最终拿到的是16进制的原始私钥

    在这里插入图片描述


    如果仍然有疑问,欢迎留言!

本文来自博客园,作者:无所事事O_o,转载请注明原文链接:OPENSSL生成非对称加密公私钥 - 无所事事O_o - 博客园

推荐一下我的微信小程序 - “二次验证码TOTP”

  • 有任何建议或需求可以直接联系我
  • 免费云端加密备份 :换机不丢失,安全又便捷
  • API快速集成 :提供开放API,实现自动化验证码获取
  • 多端共享:基于微信小程度,可同时在手机,PC端共同使用,一键复制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值