(最新版)密码学实验报告 下载本文

*2+secret[i][4]*2*2*2*2+secret[i][5]*2*2*2*2*2+secret[i][6]*2*2*2*2*2*2+secret[i][7]*2*2*2*2*2*2*2; } }

实验四 RSA

实验学时:4学时 实验类型:验证 实验要求:必修 一、实验目的

编程实现RSA公钥密码的加解密方法。 二、实验内容

(1)编程实现RSA算法的加密过程; (2)编程实现RSA算法的解密过程。 三、实验原理、方法和手段

RSA算法过程如下:

(1)选取两个保密的大素数,(二者不可相差悬殊) (2)计算,;

(3)选取整数,满足,且; (4)计算,满足(一般) 则为加密密钥,为解密密钥。 加密过程为 解密过程为

四、实验组织运行要求

本实验采用集中授课形式,每个同学独立完成上述实验要求。 五、实验条件

每人一台计算机独立完成实验,有如下条件: (1)硬件:微机;

(2)软件:VC++6.0、VC++.Net 2005。 六、实验步骤

(1)将各函数编写完成;

(2)在主函数中调用各函数,实现加密和解密。 七、实验报告

实验报告主要包括实验目的、实验内容、实验原理、源程序及结果。 加密:

#include

int jia(int m,int e,int t) { int i,c; c=1;

for(i=1;i<=e;i++)

c=(m*c)%t;

printf(\密文为:%d\}

void main() {

int p,q,e,n,t,m;

printf(\scanf(\

n=p*q;

t=(p-1)*(q-1);

printf(\欧拉函数值为%d\\n\

printf(\scanf(\

printf(\输入明文: \ scanf(\

jia(m,e,n); }

解密:

#include

int jie(int m,int e,int t) { int i,c; c=1;

for(i=1;i<=e;i++)

c=(m*c)%t;

printf(\明文为%d\\n\ }

void main() {

int p,q,e,n,t,c,d;

printf(\scanf(\

n=p*q;

t=(p-1)*(q-1);

printf(\欧拉函数值为%d\\n\

printf(\scanf(\

d=1;

while(((e*d)%t)!=1) d++;

printf(\输入密文: \

scanf(\ jie(c,d,n); }