实验七 基于 RSA/DSA 的数字签名实现
一、实验目的
➢ 理解公钥密码及数字签名相关的基本概念
➢ 理解并能够编写 RSA 或 DSA 数字签名算法
➢ 熟练应用 C++编程实现数字签名体制
二、实验内容
1.编程实现 RSA 数字签名,算法描述参考课本。
2. 编程实现 DSA 数字签名,算法描述参考 PPT。
三、实验原理
RSA 签名算法原理:
设 N=p q,且 p 和 q 是两个大素数,e 和 d 满足 e d≡l(mod ≯(N))。
公开密钥:e,N
私有密钥:d ,N
签名过程:发送方使用自己的私钥 d 对明文 m 进行数字签名变换: c=x
d
mod N:并将
加密后的消息和签名 c 发送给接收方;
验证过程:接收方使用发送方的公钥 e 对收到的消息 c 进行数字签名验证变换 x’=y
e
mod
N,并使用发送方的密钥解密恢复消息 x,比较 x’与 x,如果 x’=x 则证实发送方的身份合
法。
这样,用户 A 若想用 RSA 签名方案对消息 x 签名,他只需公开他的公钥 N 和 e,由于
签名算法是保密的,因此 A 是唯一能产生签名的人,任何要验证用户 A 签名的用户只需查
到 A 的公钥即可验证签名。
四、实验步骤(包括流程图、功能模块)
评论0