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

实例3.5.2 数字签名

信息安全技术实验教程(第四版)

实例3.5.2 数字签名

1.RSA密钥签名验签

第1步:在虚拟机KaliLinux1的主文件夹中,新建文件夹test(可以自定义文件夹名称)。

image-20250413185517048

之后在test文件夹里打开终端,执行如下命令创建文本文件。

image-20250413190046447

echo openssl sign test > signtest.txt

image-20250413190137564

第2步:在虚拟机KaliLinux1中,执行如下命令生成RSA密钥对,并且提取出公钥。

openssl genrsa -out rsa_private.key

openssl rsa -in rsa_private.key -pubout -out rsa_public.key

image-20250413190334975

第3步:在虚拟机KaliLinux1中,执行如下命令用RSA私钥对SHA1计算得到的摘要值签名。即文件signtest.txt的签发人对文件进数字签名。

openssl dgst -sign rsa_private.key -sha1 -out sha1_rsa_file.sign signtest.txt

image-20250413190456602

第4步:在虚拟机KaliLinux1中验证收到文件的数字签名,执行如下命令用相同的私钥和摘要算法进行验签。

openssl dgst -prverify rsa_private.key -sha1 -signature sha1_rsa_file.sign signtest.txt

image-20250413190616277

KaliLinux1中**test**文件夹的文件如下:

image-20250413190904821

第5步:在虚拟机KaliLinux-2中验证收到文件的数字签名,请将KaliLinux1test文件夹复制到KaliLinux2的主文件夹中,在KaliLinux2test文件夹里打开终端,执行如下命令用相应的公钥和相同的摘要算法进行验签,否则会失败。

openssl dgst -verify rsa_public.key -sha1 -signature sha1_rsa_file.sign signtest.txt

image-20250413191835830

2.DSA密钥签名验签

第1步:在虚拟机KaliLinux1的主文件夹中,在test里打开终端执行如下命令生成DSA参数。

openssl dsaparam -out dsa.param 1024

image-20250413193140798

第2步:在虚拟机KaliLinux1中,执行如下命令由DSA参数生成DSA密钥对,并且提取出公钥。

openssl gendsa -out dsa_private.key dsa.param

openssl dsa -in dsa_private.key -out dsa_public.key -pubout

image-20250413193210411

第3步:在虚拟机KaliLinux1中,执行如下命令用DSA私钥对SHA384计算的摘要值进行签名。即文件signtest.txt的签发人对文件进数字签名。

openssl dgst -sign dsa_private.key -sha384 -out sha384_dsa.sign signtest.txt

image-20250413193237240

第4步:在虚拟机KaliLinux1中验证收到文件的数字签名,执行如下命令用相同的私钥和摘要算法进行验签。

openssl dgst -prverify dsa_private.key -sha384 -signature sha384_dsa.sign signtest.txt

image-20250413193257455

第5步:在虚拟机KaliLinux-2中验证收到文件的数字签名(先将在RSA密钥签名验签时的KaliLinux2test文件夹删除或放到回收站,再将KaliLinuxtest文件夹复制到KaliLinux-2的主文件夹下),执行如下命令用相应的公钥和摘要算法进行验签。

openssl dgst -verify dsa_public.key -sha384 -signature sha384_dsa.sign signtest.txt

image-20250413194057075

相关文章:

  • ubuntu2204安装显卡驱动+多版本的cuda+cudnn+多版本tensorRT
  • Series和 DataFrame是 Pandas 库中的两种核心数据结构
  • 设计模式——建造者模式(生成器模式)总结
  • 【从0到1学Elasticsearch】Elasticsearch从入门到精通(上)
  • MySQL 5.7.43 二进制安装指南:从零开始的高效快速实现安装部署
  • 【C++】C与C++、C++内存空间、堆与栈
  • SAX解析XML:Java程序员的“刑侦破案式“数据处理
  • JS的大数运算(注意:原生的只支持整数计算!!!)
  • 四、Appium Inspector
  • 【小沐学GIS】基于C++绘制三维数字地球Earth(QT5、OpenGL、GIS、卫星)第五期
  • 【AI大模型】大模型RAG技术Langchain4j 核心组件深入详解
  • C++项目 —— 基于多设计模式下的同步异步日志系统(2)(工厂模式)
  • CAD 像素点显示图片——CAD二次开发 OpenCV实现
  • c语言 open函数
  • 「OC」小白书读书笔记——Block的相关知识(下)
  • 实现vlan间的通信
  • 解决单设备号双目摄像头调用难题:经验分享与总结
  • 融媒体中心智能语音识别系统设计与实现
  • 第2个小脚本:批量读取所有英文txt文章内容提取高频的单词
  • Matlab学习笔记五十:循环语句和条件语句的用法
  • ESG考证虚火:相比证书,知识结构+实战经验更重要
  • 宜昌谱写新叙事:长江大保护与高质量发展如何相互成就
  • 思想史家陈谷嘉逝世,曾为岳麓书院当代复兴奠定重要基础
  • 占地57亩的“潮汕豪宅”面临强制拆除:曾被实施没收,8年间举行5次听证会
  • 人民日报民生观:转人工客服,怎么这么难?
  • 西班牙政府排除因国家电网遭攻击导致大停电的可能