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

openssl 命令行生成密钥对,生成hash,PSS填充签名,校验

生成密钥对

openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:4096
openssl rsa -pubout -in private_key.pem -out public_key.pem

将源文件data.txt生成hash值(sha-256)

openssl dgst -sha256 -binary data.txt > data.sha256

对hash值进行签名

openssl pkeyutl -sign -in data.sha256 -inkey private_key.pem -out signature.bin -pkeyopt digest:sha256 -pkeyopt rsa_padding_mode:pss -pkeyopt rsa_pss_saltlen:-1

验证签名

openssl pkeyutl -verify -in data.sha256 -sigfile signature.bin -pkeyopt rsa_padding_mode:pss  -pubin -inkey public_key.pem -pkeyopt rsa_pss_saltlen:-1 -pkeyopt digest:sha256

签名命令参数详解
pkeyutl: 这是OpenSSL的一个命令行工具,用于执行与公钥和私钥相关的多种操作,包括签名、验证签名、加密、解密等。

-sign: 指定此命令的操作模式为签名。这意味着你打算使用私钥对数据进行签名。

-in data.txt: 指定要进行签名的数据文件为data.txt。这个文件的内容将被读取并用于生成签名。

-inkey private_key.pem: 指定用于签名的私钥文件是private_key.pem。这个文件应该包含你的RSA私钥。

-out sig1.bin: 设置输出签名文件名为sig1.bin。签名结果会被保存到这个文件中。

-pkeyopt digest:sha256: 这个选项指定了在签名过程中使用的摘要算法为SHA-256。这意味着在对数据进行签名前,数据会先通过SHA-256算法计算摘要值。

-pkeyopt rsa_padding_mode:pss: 设置填充模式为PSS(Probabilistic Signature Scheme)。PSS是一种安全的填充方案,常用于RSA签名,提供随机化以增强安全性。

-pkeyopt rsa_pss_saltlen : -1: 指定PSS填充中的盐长度为自动(默认或最大可能值)。值-1通常意味着让OpenSSL根据密钥大小自动选择最佳的盐长度,这有助于提高安全性。

相关文章:

  • x64汇编fastcall调用约定
  • 高阶图神经网络 (HOGNN) 的概念、分类和比较
  • 每月 GitHub 探索|10 款引领科技趋势的开源项目
  • 数学-奇异值
  • STM32通过SPI硬件读写W25Q64
  • MFC GDI绘制卡通人物
  • 长亭网络通信基础
  • LabVIEW、Matlab与Python的比较:从多角度详解三大编程工具
  • 网络安全:Web 安全 面试题.(文件上传漏洞)
  • WPF——属性
  • 案例分享:同为科技与军工项目合作
  • 多层感知器的进化:从基础到并行门控——深入探讨MLP变体的实现、优化与风险
  • 深度解析SD-WAN在企业组网中的应用场景
  • [18] Opencv_CUDA应用之 基于颜色的对象检测与跟踪
  • java -jar
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Android Volley源码解析
  • CODING 缺陷管理功能正式开始公测
  • CSS中外联样式表代表的含义
  • Linux中的硬链接与软链接
  • php面试题 汇集2
  • Web标准制定过程
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 关于springcloud Gateway中的限流
  • 记一次用 NodeJs 实现模拟登录的思路
  • 微信小程序设置上一页数据
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • linux 淘宝开源监控工具tsar
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • #includecmath
  • #QT(串口助手-界面)
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (~_~)
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (二)PySpark3:SparkSQL编程
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (一)认识微服务
  • (原)本想说脏话,奈何已放下
  • *上位机的定义
  • .axf 转化 .bin文件 的方法
  • .bat批处理(一):@echo off
  • .cfg\.dat\.mak(持续补充)
  • .Net 6.0--通用帮助类--FileHelper
  • .NET CORE Aws S3 使用
  • .NET Framework 3.5安装教程
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • [AI]文心一言爆火的同时,ChatGPT带来了这么多的开源项目你了解吗