【网络与信息安全】实验三 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格式,再通过公钥验证签名有效性,这一流程让我深刻理解了数字签名在保障数据完整性和身份认证中的关键作用。总体而言,本次实验将理论知识与实践操作紧密结合,既巩固了密码学基础概念,又提升了工具使用和问题解决能力,为后续学习网络安全相关技术奠定了扎实基础。
六、实验思考题
-
观察结果,与对称密码相比,RSA加解密有什么特点?
-
RSA使用公钥加密、私钥解密(或私钥签名、公钥验签),而对称密码(如AES)使用单一密钥完成加解密。
-
RSA的安全性依赖于大数分解难题,私钥无需传输,避免了对称密码中密钥分发被截获的风险。
-
RSA天然支持数字签名和密钥协商,而对称密码需结合其他机制(如HMAC)实现类似功能。
-
-
介绍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)对比,若一致则验证通过。