当前位置: 首页 > news >正文

OPENSSL生成非对称加密公私钥

前言

基本说明

  • 本文会尽量说明的更详细一些,避免误导一些对加密领域不太熟悉的同学,对于忽略掉未说明的且需要提前了解的内容也会尽量提示出来
  • 本文内生成的文件均为密钥,不涉及证书的内容,密钥与证书的关系,以及各位客官所需要的究竟是密钥还是证书请自行查阅
  • 不同格式的密钥,使用时也会有所不同,因此需要明确自己要用的是什么编码和格式的密钥

生成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进制的原始私钥
    在这里插入图片描述
    如果仍然有疑问,欢迎留言!
http://www.jsqmd.com/news/789546/

相关文章:

  • DLSS Swapper深度解析:游戏超采样技术的智能管理架构
  • 三步轻松下载B站4K大会员视频:免费开源工具完全指南
  • 释放网易云音乐:ncmToMp3解密工具完全指南
  • 如何实现跨平台局域网文件传输:LAN Share完整使用指南
  • Excel数据检索革命:5分钟搞定100个文件的批量查询神器
  • 抖音评论采集神器:3分钟获取完整评论数据的终极方案
  • 一键解锁九大网盘高速下载:告别限速困扰的本地化解决方案
  • Android车载人工智能系统开发实践
  • 终极效率革命:Rusted PackFile Manager如何将全面战争MOD开发效率提升500%
  • 别急着换HBA卡!Linux服务器messages日志狂刷multipath报错,先按这个流程查存储
  • Origin Pro 2023保姆级教程:从数据导入到论文配图,手把手教你搞定科研绘图
  • 保姆级教程:手把手教你用CANdela Studio配置车载诊断数据库(CDD文件)
  • 嵌入式开发者如何利用Taotoken管理多个大模型API密钥
  • 高效代码仓库模板:规范团队协作与自动化研发流程
  • DLSS Swapper终极指南:5步精通游戏性能优化利器
  • 5分钟解锁Windows图片浏览新境界:ImageGlass轻量级图像查看器深度体验
  • 如何用免费终极Windows清理工具:一键解决C盘爆满的完整指南
  • mammoth.js架构深度解析:DOCX到HTML转换引擎的设计哲学与实现
  • 基于ZYNQ的XVC Server异步传输架构设计与性能极限分析
  • 手把手教你为网件R7900P/R7960P挂载U盘,解决JFFS分区不足50M的软件中心问题
  • 2026年免费降AI率靠谱吗?亲测多款工具,教你高效安全降AIGC率 - 降AI实验室
  • 3分钟搞定电子书元数据:Calibre豆瓣插件终极指南
  • AI可观测性已进入“SITS2026纪元”(2026年行业强制基线标准倒计时9个月)
  • Adobe-GenP通用补丁:3步解锁Adobe全家桶完整功能终极指南
  • AI工具搭建自动化视频生成Git for Prompts
  • AI技能化跨平台社交发布:一次编写,处处发布的自动化解决方案
  • 多模型协作客户端openmcp-client:构建AI应用统一调度引擎
  • Arcgis进阶实战指南:栅格平滑、NoData赋值、标注定位与中心点提取
  • 从Mealy到Moore:一个简单的序列检测器,带你吃透Verilog状态机时序
  • 基于Kuramoto模型与多特征融合的EEG脑网络动力学建模与CNN分析