信息安全实验六:RSA数字签名算法

时间:2024-03-14 11:58:48

实验RSA数字签名算法

一、实验目的

理解、掌握RAS数字签名算法的基本过程。

二、实验内容

  1. 熟悉MPIR大整数运算库函数的调用。
  2. 熟悉MD5散列的调用。
  3. 利用MPIR大整数运算库函数,实现RSA数字算法。要求:1)RSA模数为2048bit;2)能对任意文件进行签名、验证(调用MD5散列函数求文件的散列值,再对散列值进行签名)。

三、RSA数字签名算法基本原理

信息安全实验六:RSA数字签名算法

信息安全实验六:RSA数字签名算法

 

RSA具体实现步骤

第一步,随机选择两个不相等的质数p和q。

第二步,计算p和q的乘积n。

第三步,计算n的欧拉函数φ(n)。

第四步,随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质。

第五步,计算e对于φ(n)的模反元素d。

第六步,将n和e封装成公钥,n和d封装成私钥。

 

*现实中为了计算快捷,e一般取65537,

 

加密

me ≡ c (mod n) 信息m加密成C

解密

cd ≡ m (mod n)

 

 

因为已经有了RSA加密算法,所以RSA签名算法很简单,只需要将RSA加密算法的公钥私钥互换即可。即私钥加密,公钥解密。

由于需要任意长度的文件进行加密,所以先用MD5对文件进行hash,得到非常短的,且定长的一段32位的16进制字符串(128位2进制数字),然后用RSA签名即可。

 

 

四、实验过程

(上次的实验四RSA加密算法用mpir库的时候忘了把打印设置为16进制数,打印的是10进制数,非常不直观,这次把d全部改成了x)

关键代码:

 

 

 

信息安全实验六:RSA数字签名算法

信息安全实验六:RSA数字签名算法

信息安全实验六:RSA数字签名算法

信息安全实验六:RSA数字签名算法

 

和实验四几乎一模一样,只是把加解密的秘钥互换

五、实验结果

信息安全实验六:RSA数字签名算法


本文所有代码及资源稍后给出。