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

【网络与信息安全】实验三 RSA加解密与签名验证

实验三、RSA加解密与签名验证


一、实验基本信息

  • 实验名称:RSA加解密与签名验证
  • 实验目的:
    • 理解 RSA 加密解密数字签名验证 的原理。
    • 借助 CyberChef 可视化平台,观察和理解加密与签名背后的数据变化。

二、实验环境

  • 操作系统:Windows 10 / 11
  • 浏览器:Chrome / Firefox
  • 主要工具:
    • CyberChef 网站平台
    • 在线RSA密钥生成器

三、实验过程记录

  • (需要详细说明过程+截图)

OpenSSL安装与配置

1.打开网址https://slproweb.com/products/Win32OpenSSL.html下载OpenSSL的EXE安装包

在这里插入图片描述

2.安装完成后,配置OpenSSL

**在这里插入图片描述
**

3.Windows+R输入cmd打开命令行,输入openssl version查看是否安装成功。

在这里插入图片描述

Part1:RSA加密解密

1.1在OpenSSL目录下,创建一个private目录存放生成的私钥,打开命令行模式,输入以下命令行生成RSA私钥,可以选择生成 1024 或 2048 位的私钥

openssl genpkey -algorithm RSA -out private\private_key.pem -pkeyopt rsa_keygen_bits:2048

在这里插入图片描述

生成的文件private_key.pem如下图所示

在这里插入图片描述

1.2OpenSSL目录下,创建一个public目录存放生成的公钥,在命令行输入以下命令,根据 private目录下的RSA 私钥生成 RSA 公钥,保存于public中

openssl rsa -pubout -in private\private_key.pem -out public\public_key.pem

在这里插入图片描述

1.3打开CyberChef网站https://gchq.github.io/CyberChef/按照如下方式配置RSA加密

1.Data format->To Hex
2.RSA Encrypt
----将刚才生成的公钥文件public_key.pem粘贴至RSA Public Key(PEM)中
----Encryption Schema:RAW
3.Data format->To Base64

在右边Input处输入明文,观察输出的密文,并将加密的密文复制保存

There is Xinjiang University.-_-

在这里插入图片描述

加密后密文:

B95tkqqNa4LxDwAYgzgwrE4i4np/4f2N8CqINTCYbhZHuuMYPiKfJoivFpSNd+HHy2eyV9lPsMOkebNjshG+3+nIiLbjYHveT9gPUQxRrGF38EGRkOt5oryqfex0P0pHxf68ZKq9Gh5rgy/1Ohy2LivvUOvT/duO2iP7tg5lMv0aY2qUa50ioWMFwRu7o1+Z6Z7vHIfPsdeqP0Qiw6bpxXh7a6wKPKnnl7oPJhOQ3lyvmAg1ZC3BCTTlSHaCK4JmykIQqCtEan1f7pNsEietjIWSUqJ9RFGyLrzMwb7Vdj8x30Ha+vRTsqoVQ5MQtEdW44VAWYhuZ6dBQSgihI6uYg==

1.4重新打开一个CyberChef网站https://gchq.github.io/CyberChef/按照如下方式配置RSA解密

1.Data format->From Base64
2.RSA Encrypt
----将刚才生成的私钥文件private_key.pem粘贴至RSA Private Key(PEM)中
----Key password:空
----Encryption Schema:RAW
3.Data format->From Hex

在这里插入图片描述

根据结果显示,解密的结果与加密的明文一致。

Part2:RSA签名验证

  • 继续使用公私钥对(public_key.pem和private_key.pem)

2.1签名操作,打开一个CyberChef网站https://gchq.github.io/CyberChef/

1.RSA sign(签名,而不是加密)
----将刚才生成的私钥文件private_key.pem粘贴至RSA Private Key(PEM)中
----Key password:空
----Message Digest Algorithm:SHA-1
2.Data format->To Base64

输入原始消息(There is Xinjiang University.-_-)

在这里插入图片描述

签名操作之后的内容

Z6ozBKfPyYD2ch67ERDWUnKqTxbvHLhTNICa8arh2/+nhFxyXMU/smcCtGzYZ/Tko3WUnCP4msn7HY3b7t7d8c4ePHCqqTLKIsZ9XLJW/ssnWNRQrRMHBqzggc2fbm82ZhZKDDofkqWsWJlaskVt5sSX0bQKDu9v8XwEo7+zQPmt05huD4GQfvlCBRpqrS1HiKGIYDBIe1XrCHBvlWIgeSkHy+o9CkCgIfMBPnzome+KciJ6diRRHbB1by5ICP5GVLkt3EXl9Apq2TOAR7wap1UGgLUqMS5eGSbq6pg6tFsDob+c/MLbu1V4X9eJU/n9RKUqYJUdcE066Gxh9m9yoA==

2.2验证操作,重新打开一个CyberChef网站https://gchq.github.io/CyberChef/

1.Data format->From Base64
2.RSA verify(验证,而不是解密)
----将刚才生成的公钥文件public_key.pem粘贴至RSA Public Key(PEM)中
----Message:There is Xinjiang University.-_-
----message format:Raw
----Message Digest Algorithm:SHA-1

在这里插入图片描述

输出verified ok,表明验证成功


四、遇到的问题与解决方法

  • 问题描述:存放密钥的目录不存在

    解决方案:如果private目录不存在,OpenSSL不会自动创建它,导致命令失败。因此手动创建private

  • 问题描述:命令中指定的私钥路径 private\private_key.pem 或 private/private_key.pem 不存在

    解决方案:在命令行输入以下命令验证文件是否存在

    dir private\private_key.pem
    
  • 问题描述:验证公钥和私钥是否匹配

    解决方案:输入以下指令,比对输出的内容,查看是否一致

    openssl rsa -pubin -in private/private_key.pem -text -noout
    openssl rsa -pubin -in public/public_key.pem -text -noout
    

五、实验总结

通过本次实验,我深入理解了RSA加密解密与数字签名验证的原理,并成功借助CyberChef可视化平台观察了加密与签名背后的数据变化。在配置CyberChef平台时,通过公钥加密明文并观察其转换为Hex和Base64格式的过程,直观体会了非对称加密的特点;随后使用私钥解密密文,成功还原明文,验证了RSA加解密的可行性。在签名验证环节,利用私钥对消息进行SHA-1签名并转为Base64格式,再通过公钥验证签名有效性,这一流程让我深刻理解了数字签名在保障数据完整性和身份认证中的关键作用。总体而言,本次实验将理论知识与实践操作紧密结合,既巩固了密码学基础概念,又提升了工具使用和问题解决能力,为后续学习网络安全相关技术奠定了扎实基础。


六、实验思考题

  1. 观察结果,与对称密码相比,RSA加解密有什么特点?

    • RSA使用公钥加密、私钥解密(或私钥签名、公钥验签),而对称密码(如AES)使用单一密钥完成加解密。

    • RSA的安全性依赖于大数分解难题,私钥无需传输,避免了对称密码中密钥分发被截获的风险。

    • RSA天然支持数字签名和密钥协商,而对称密码需结合其他机制(如HMAC)实现类似功能。

  2. 介绍RSA加解密与签名的原理
    (1)加解密原理:

    • 选取一对质数,选取的质数的值越大越安全。
    • 计算公共模数n=p*q,如果质数越大,则乘积n越大。乘积n越大。n转换为二进制后对应的加密位数越长。越长的加密位数,越容易引发雪崩效应,以减小数据的关联性。故越安全。
    • 计算欧拉函数**φ(n) = φ(p*q) = (p-1)(q-1)**φ函数计算的是1~n之中的互斥数的个数。
    • 随机选择一个公钥E,其中1<E<φ(N)并且E不是φ(N)因子。
    • 计算私钥D,( E*D )% φ(N)=1。

    (2)签名原理

    • 与加解密相同,生成公钥(n, e)和私钥(n, d)。
    • 发送方用私钥对消息哈希值(如SHA-256)进行加密,生成签名S = H(M)^d mod n。
    • 接收方用公钥解密签名S^e mod n得到H’(M),并与本地计算的H(M)对比,若一致则验证通过。
http://www.xdnf.cn/news/743905.html

相关文章:

  • 澄清 STM32 NVIC 中断优先级
  • [网页五子棋][对战模块]实现游戏房间页面,服务器开发(创建落子请求/响应对象)
  • 中文NLP with fastai - Fastai Part4
  • 新视角!经济学顶刊QJE用文本分析探究新技术扩散
  • 简单cnn
  • go|channel源码分析
  • c# 如何中的 ? 与 ??
  • “粽”览全局:分布式系统架构与实践深度解析(端午特别版)
  • 《信号与系统》第 5 章 离散时间傅里叶变换
  • 2025年- H61-Lc169--74.搜索二维矩阵(二分查找)--Java版
  • Qt -下载Qt6与OpenCV
  • Python训练营打卡Day41
  • 5G-A:开启通信与行业变革的新时代
  • 2025年渗透测试面试题总结-匿名[校招]渗透测试(打击黑灰产)(题目+回答)
  • Python实现P-PSO优化算法优化循环神经网络LSTM回归模型项目实战
  • 华为OD机试真题——文件目录大小(2025 A卷:100分)Java/python/JavaScript/C++/C语言/GO六种语言最佳实现
  • (11)课29--30:navicat 的用法;行转列的查询与典型算法,并涉及分组(学生各科成绩与比赛胜负);
  • 【Unity】AudioSource超过MaxDistance还是能听见
  • AI笔记 - 网络模型 - mobileNet
  • [蓝桥杯]机器人塔
  • Java 文件操作 和 IO(5)-- 综合案例练习 -- 示例一
  • antddesign使用iconfont的字体库和图标库
  • 微服务中引入公共拦截器
  • python从零开始实现四极场离子轨迹仿真——框架
  • 深入理解设计模式之访问者模式
  • 帕金森带来的生活困境
  • Centos系统搭建主备DNS服务
  • Java 数据处理 - 数值转不同进制的字符串(数值转十进制字符串、数值转二进制字符串、数值转八进制字符串、数值转十六进制字符串)
  • 【Bluedriod】蓝牙协议栈GD模块(GD_SHIM_MODULE)启动机制及源码解析
  • LXQt修改开始菜单高亮