RSA算法的实现实验报告

合集下载

RSA实验报告

RSA实验报告

RSA算法的C语言实现一、RSA 算法的描述1、选取长度相等的两个大素数p 和q,计算其乘积:n = pq,然后随机选取加密密钥e,使e 和(p–1)(q–1)互素。

最后用欧几里德扩展算法计算解密密钥d,以满足ed = 1(mod(p–1) ( q–1))即d = e–1 mod((p–1)(q–1)),e 和n 是公钥,d 是私钥。

2、加密公式如下:ci = mi^e(mod n)3、解密时,取每一密文分组ci 并计算:mi = ci^d(mod n)Ci^d =(mi^e)^d= mi^(ed)= mi^[k(p–1)(q–1)+1 ]= mi mi^[k(p–1)(q–1)]= mi *1 = mi4、消息也可以用d 加密用e 解密二、流程图三、代码#include <stdio.h>int candp(int a,int b,int c) //数据处理函数,实现幂的取余运算{ int r=1;b=b+1;while(b!=1){r=r*a;r=r%c;b--;}printf("%d\n",r);return r;}int fun(int x,int y) //公钥e 与t 的互素判断{int t;while(y){t=x;x=y;y=t%y;}if(x == 1)return 0; //x 与y 互素时返回0elsereturn 1; //x 与y 不互素时返回1}void main(){int p,q,e,d,m,n,t,c,r;printf("请输入两个素数p,q: ");scanf("%d%d",&p,&q);n=p*q;printf("计算得n 为%3d\n",n);t=(p-1)*(q-1); //求n 的欧拉数printf("计算得t 为%3d\n",t);printf("请输入公钥e: ");scanf("%d",&e);if(e<1||e>t||fun(e,t)){printf("e 不合要求,请重新输入: "); //e<1 或e>t 或e 与t 不互素时,重新输入scanf("%d",&e);}d=1;while(((e*d)%t)!=1) d++; //由公钥e 求出私钥dprintf("经计算d 为%d\n",d);printf("加密请输入1\n"); //加密或解密选择printf("解密请输入2\n");scanf("%d",&r);switch(r){case 1: printf("请输入明文m: "); //输入要加密的明文数字scanf("%d",&m);c=candp(m,e,n);printf("密文为%d\n",c);break;case 2: printf("请输入密文c: "); //输入要解密的密文数字scanf("%d",&c);m=candp(c,d,n);printf("明文为%dd\n",m);break;}}四、运行结果及分析输入的两个素数是21和23,根据n=p*q,计算出n=21*23=483,根据t=(p-1)*(q-1),计算出t=20*22=440,输入与t互素的公钥e,此时输入的e 为13,计算出私钥d为237,选择1进行加密,输入明文123456,调用加密函数后加密的结果为396,与用加密公式ci = mi^e(mod n)进行计算的结果是一样的。

现代密码算法实验报告(3篇)

现代密码算法实验报告(3篇)

第1篇一、实验目的1. 了解现代密码学的基本原理和数论基础知识;2. 掌握非对称密码体制的著名代表RSA加密算法的工作原理和流程;3. 设计实现一个简单的密钥系统;4. 掌握常用加密算法AES和DES的原理及实现。

二、实验内容1. RSA加密算法实验2. AES加密算法实验3. DES加密算法实验三、实验原理1. RSA加密算法RSA算法是一种非对称加密算法,由罗纳德·李维斯特、阿迪·沙米尔和伦纳德·阿德曼三位密码学家于1977年提出。

其基本原理是选择两个大质数p和q,计算它们的乘积n=pq,并计算欧拉函数φ(n)=(p-1)(q-1)。

选择一个整数e,满足1<e<φ(n)且e与φ(n)互质。

计算e关于φ(n)的模逆元d。

公开密钥为(e,n),私有密钥为(d,n)。

加密过程为C=Me mod n,解密过程为M=Cd mod n。

2. AES加密算法AES(Advanced Encryption Standard)是一种分组加密算法,采用128位分组大小和128、192或256位密钥长度。

AES算法主要分为四个阶段:初始轮、密钥扩展、中间轮和最终轮。

每个轮包括字节替换、行移位、列混淆和轮密钥加。

3. DES加密算法DES(Data Encryption Standard)是一种分组加密算法,采用64位分组大小和56位密钥长度。

DES算法主要分为16轮,每轮包括置换、置换-置换、S盒替换和密钥加。

四、实验步骤及内容1. RSA加密算法实验(1)选择两个大质数p和q,计算n=pq和φ(n)=(p-1)(q-1);(2)选择一个整数e,满足1<e<φ(n)且e与φ(n)互质,计算e关于φ(n)的模逆元d;(3)生成公开密钥(e,n)和私有密钥(d,n);(4)用公钥对明文进行加密,用私钥对密文进行解密。

2. AES加密算法实验(1)选择一个128、192或256位密钥;(2)初始化初始轮密钥;(3)进行16轮加密操作,包括字节替换、行移位、列混淆和轮密钥加;(4)输出加密后的密文。

rsa算法实验报告

rsa算法实验报告

rsa算法实验报告RSA算法实验报告摘要:RSA算法是一种非对称加密算法,被广泛应用于网络安全领域。

本实验通过对RSA算法的原理和实现进行了深入研究,并通过编写代码实现了RSA算法的加密和解密过程。

实验结果表明,RSA算法具有较高的安全性和可靠性,能够有效保护数据的机密性和完整性。

一、引言RSA算法是一种基于大数因子分解的非对称加密算法,由Rivest、Shamir和Adleman三位数学家于1977年提出。

它的安全性基于两个大素数的乘积难以分解,因此被广泛应用于数字签名、数据加密等领域。

本实验旨在通过对RSA 算法的原理和实现进行研究,深入了解其加密和解密过程,并通过编写代码实现RSA算法的加密和解密过程。

二、RSA算法原理RSA算法的原理主要包括密钥生成、加密和解密三个过程。

首先,选择两个大素数p和q,并计算它们的乘积n=p*q,然后计算欧拉函数φ(n)=(p-1)*(q-1)。

接下来选择一个整数e,使得1<e<φ(n),且e与φ(n)互质,即e和φ(n)的最大公约数为1。

然后计算e的乘法逆元d,使得(e*d) mod φ(n) = 1。

最后,公钥为(n, e),私钥为(n, d)。

加密过程中,将明文m通过公钥加密为密文c,即c=m^e mod n;解密过程中,将密文c通过私钥解密为明文m,即m=c^d mod n。

三、实验设计本实验使用Python语言编写了RSA算法的加密和解密代码,通过输入明文和密钥,实现了对明文的加密和解密过程。

具体实验步骤如下:1. 选择两个大素数p和q,并计算n=p*q,以及φ(n)=(p-1)*(q-1);2. 选择一个整数e,使得1<e<φ(n),且e与φ(n)互质;3. 计算e的乘法逆元d,使得(e*d) mod φ(n) = 1;4. 将明文m通过公钥加密为密文c,即c=m^e mod n;5. 将密文c通过私钥解密为明文m,即m=c^d mod n。

2023年网络安全RSA算法的实现实验报告

2023年网络安全RSA算法的实现实验报告

网络安全基础教程汇报题目:RSA加密算法学号:专业及班级:计网1102班**:***日期:2023.11.26一、RSA算法简介与应用现实状况RSA公开密钥加密算法自20世纪70年代提出以来,已经得到了广泛承认和应用。

发展至今,电子安全领域旳各方面已经形成了较为完备旳国际规范。

RSA作为最重要旳公开密钥算法,在各领域旳应用数不胜数。

RSA在硬件方面,以技术成熟旳IC应用于多种消费类电子产品。

RSA在软件方面旳应用,重要集中在Internet上。

加密连接、数字签名和数字证书旳关键算法广泛使用RSA。

平常应用中,有比较著名旳工具包Open SSL(SSL,Security Socket Layer,是一种安全传播协议,在Internet上进行数据保护和身份确认。

Open SSL是一种开放源代码旳实现了SSL及有关加密技术旳软件包,由加拿大旳Eric Yang等发起编写旳。

Open SSL应用RSA实现签名和密钥互换,已经在多种操作系统得到非常广泛旳应用。

此外,家喻户晓旳IE浏览器,自然也实现了SSL协议,集成了使用RSA技术旳加密功能,结合MD5和SHA1,重要用于数字证书和数字签名,对于习惯于使用网上购物和网上银行旳顾客来说,几乎每天都在使用RSA技术。

RSA更出目前规定高度安全稳定旳企业级商务应用中。

在当今旳企业级商务应用中,不得不提及使用最广泛旳平台j2ee。

实际上,在j2se旳原则库中,就为安全和加密服务提供了两组API:JCA和JCE。

JCA (Java Cryptography Architecture)提供基本旳加密框架,如证书、数字签名、报文摘要和密钥对产生器;JCA由几种实现了基本旳加密技术功能旳类和接口构成,其中最重要旳是java.security包,此软件包包括旳是一组关键旳类和接口,Java 中数字签名旳措施就集中在此软件包中。

JCE(Java Cryptography Extension) 在JCA旳基础上作了扩展,JCE也是由几种软件包构成,其中最重要旳是javax.crypto包,此软件包提供了JCE加密技术操作API。

RSA算法实现报告

RSA算法实现报告
• • • • • • • • 1.选择两个不同的大素数p、q (目前两个数的长度都接近512bit是安全的); 2. 计算n = p*q。 3. 计算n的欧拉函数 t=(p-1)(q-1)。 4. 选择整数e作为公钥,使e与t互素,且1<e< t。 5. 用欧几里得算法计算d作为私钥,使d*e=1 mod t。 6. 加密:C=M^e mod n 7. 解密:M=C^d mod n=(M^e)^d mod n= M^e^d mod n 。
RSA算法实现报告
小组成员:王嘉钰、陈梁柱、赖娜、伍沛云

• • • •
• • •


1. RSA算法介绍与应用现 2. 算法原理 3. RSA算法数论基础 4. RSA算法的各环节 4.1.RSA公钥加密解密概述 4.2. RSA签名算法 5. RSA的安全性 6. 代码实现: 7. RSA算法结果分析 7.1.主界面初始化 7.2.设置密钥 7.3.对明文加密 7.4.对密文解密 8. 总结与展望
4.2 RSA签名算法
• 并非所有的公开密钥系统,均可同时达到秘密性与数字签名功能。一 般而言, 一公开密钥系统若作为密码系统,则无法作为数字签名,反 之亦然。只有很少数的系统可同时作为密码系统和数字签名,如本文 讨论的RSA系统。RSA签名算法如下: 设N=p q,且p和q是两个大素数,e和d满足e d≡l(mod ≯(N))。 公开密钥:N,e 私有密钥:d 签名过程:发送方使用自己的私钥d对明文m进行数字签名变换: y=x d mod N:并将加密后的消息和签名y发送给接收方; 验证过程:接收方使用发送方的公钥e对收到的消息y进行数字签名验 证变换x’=ye mod N,并使用发送方的密钥解密恢复消息x,比较x’与x, 如果x’=x则证实发送方的身份合法。

RSA算法的实现实验报告

RSA算法的实现实验报告

RSA算法的实现实验报告一、实验目的本实验的主要目的是了解和掌握RSA(Rivest-Shamir-Adleman)算法的原理以及其在加密和解密过程中的具体实现。

通过实践和对比分析,了解RSA算法的安全性和效率,并加深对大数计算的理解。

二、算法原理1.密钥生成(1)选择两个大素数p和q,并计算其乘积n=p*q。

(2)计算n的欧拉函数φ(n)=(p-1)*(q-1)。

(3)选择一个整数e,满足1<e<φ(n),并且e与φ(n)互质,即gcd(e, φ(n)) = 1(4)计算e的乘法逆元d,满足e*d ≡ 1 (mod φ(n))。

(5)公钥为(n,e),私钥为(n,d)。

2.加密加密过程使用公钥对明文进行加密:(1)明文转化为整数m,满足0≤m<n。

(2)计算密文c = m^e mod n。

3.解密解密过程使用私钥对密文进行解密:(1)计算明文m = c^d mod n。

(2)还原明文。

三、实验步骤1.实现大数的运算由于RSA算法的关键在于处理大数运算,我们首先实现了大数的加法、减法和乘法运算,并使用这些运算函数作为之后RSA算法中的基础运算。

2.实现RSA算法的密钥生成(1)随机选择两个大素数p和q。

(2)计算n=p*q。

(3)计算φ(n)=(p-1)*(q-1)。

(4)选择一个满足要求的公钥e。

(5)计算e的乘法逆元d。

(6)生成公钥(n,e)和私钥(n,d)。

3.实现RSA算法的加密和解密(1)输入明文。

(2)使用公钥对明文进行加密。

(3)得到密文。

(4)使用私钥对密文进行解密。

(5)还原明文。

四、实验结果与分析我们使用python语言实现了RSA算法,并进行了一些测试和分析,得到以下结果和结论。

1.RSA算法的安全性2.RSA算法的效率3.实验结果分析我们对一些常见文本进行了加密和解密实验,得到了正确的结果。

实验结果表明,RSA算法能够对数据进行有效的加密和解密,并确保数据的安全性。

RSA实验报告

RSA实验报告

RSA算法实验【实验目的】1.了解RSA算法的基本原理2.掌握RSA算法的实现方法3.通过实际编程了解非对称密码算法RSA的加密和解密过程,同时锻炼编程能力。

【实验环境】1. 应用软件:Microsoft VC++2. 操作系统:Windows XP【实验预备知识点】1. RSA密码系统所基于的数学难题是对大素数的因式分解。

2. RSA算法原理:(1).选择两个大的素数p 和q(典型情况下为1024 位)(2).计算n = p * q 和z =(p-1)*(q-1).(3).选择一个与z 互素的数,将它称为d(4).找到e,使其满足e*d = 1 mod z提前计算出这些参数以后,我们就可以开始执行加密了。

【实验内容】◆自行以2位小素数为p,q,3为公钥e,构造一个小的RSA系统,对“a、b、c、d”这4个字母进行加密,解密◆在密码教学系统中实现RSA运算的大素数、公钥、私钥的生成、明文加解密、分块大小的选择◆了解在不同分块大小的情况下,RSA系统的密文长度也会有所变化◆了解在不同参数的情况下,RSA系统的性能变化【实验步骤】1.熟悉RSA运算原理;2.打开实验程序,如图1;3.选择密钥长度为128、256、512或者1024比特;4.点击“随机求取N,E,D”按钮,得到大整数N,公钥E,密钥D;5.在明文对话框中输入需要加密的明文字符串;6.点击“加密”按钮可获得加密后的密文,点击“解密”按钮可获得解密后的明文;或者7.自己输入大整数N、公钥E、密钥D,然后点击按钮“自己输入N,E,D”就激活明文输入框。

(自己输入的数都是16进制的数)8.在明文对话框中输入需要加密的明文字符串;9.点击“加密”按钮可获得加密后的密文,点击“解密”按钮可获得解密后的明文;10.运算用时:显示的是随机求取N,E,D时,程序运行所需要的时间。

图1 RSA算法实验【实验过程】1.随机求取N,E,D:点击“随机求取N,E,D”按钮,得到下图所示的N,E,D.2.输入明文abcd,点击“加密”按钮,得到加密后的密文。

信息安全-RSA加密算法实验报告

信息安全-RSA加密算法实验报告
2.私钥
求出正数d,使其满足e d=1 mod D (n),则将(p,q,d)作为私钥。
3.加密算法对于明文M,由C=Memod n,得到密文C。
4.解密算法对于密文C,由M=Cdmod n,得到明文M
如果窃密者获得了n, e和密文C,为了破解密文必须计算出私钥d,为此需要先分解n为了提高破解难度,达到更高的安全性,一般商业应用要求n的长度不小于1024位,更重要的场合不小于2048位。
实验原理:
公钥密码算法是指一个加密系统的加密密钥和解密密钥是不同的,或者说不能用其中一个推导出另一个。在公钥密码算法的两个密钥中,一个是用于加密的密钥,它是可以公开的,称为公钥;另一个是用于解密的密钥,是保密的,称为私钥。公钥密码算法解决了对称密码体制中密钥管理的难题,并提供了对信息发送人的身份进行验证的手段,是现代密码学最重要的发明。
{b=b/2;
a=(a*a)%n;}
else{b=b-1;c1=(c1*a)%n;}}
②根据算法可得明文数据:5438 1364 2925 14571 14303 5746 8805 4588 1144 40
三、数字转化为字符
1将所得的数字数据转化为字符数据:
for(i=0;i<sl;i++)
{int j=0;
①根据导入数据的参数密文c:12423 11524 7243 7459 14303 6127 10964 16399927213629调用,以及 进行求解m:
for(i=0;i<sl;i++)
{char m1[100];
c1=1;j=0;
a=c[i];
b=d;
while(b&体制是目前为止最成功的公钥密码算法,虽然它的安全性还未能得到理论证明,但经过20多年的密码分析和攻击,迄今仍然被实践证明是安全的。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

RSA算法的实现
一、实验目的
1. 熟悉公钥密码体制;
2.掌握产生密钥对的程序设计方法;
3.掌握产生加密/解密的程序设计方法。

二、实验内容和要求
1.进行RSA加密/解密算法的设计;
2.对RSA程序进行编译和调试;
3.使用编写的程序进行加密和解密。

三、实验环境
运行Windows操作系统的PC机,可以利用具有VC++语言环境;如果所运用的语言是JAVA,那么也可以利用JAVA语言环境来实现RSA算法的加密和解密。

四、实验步骤
1.采用C++语言进行本次实验的编写,实验的代码如下:
#include <stdio.h>
#include<conio.h>
int candp(int a,int b,int c)
{ int r=1;
b=b+1;
while(b!=1)
{
r=r*a;
r=r%c;
b--;
}
printf("%d\n",r);
return r;
}
void main()
{
int p,q,e,d,m,n,t,c,r;
char s;
printf("please input the p,q: ");
scanf("%d%d",&p,&q);
n=p*q;
printf("the n is %3d\n",n);
t=(p-1)*(q-1);
printf("the t is %3d\n",t);
printf("please input the e: ");
scanf("%d",&e);
if(e<1||e>t)
{
printf("e is error,please input again: ");
scanf("%d",&e);
}
d=1;
while(((e*d)%t)!=1) d++;
printf("then caculate out that the d is %d\n",d);
printf("the cipher please input 1\n");
printf("the plain please input 2\n");
scanf("%d",&r);
switch(r)
{
case 1: printf("input the m: "); /*输入要加密的明文数字*/ scanf("%d",&m);
c=candp(m,e,n);
printf("the cipher is %d\n",c);break;
case 2: printf("input the c: "); /*输入要解密的密文数字*/ scanf("%d",&c);
m=candp(c,d,n);
printf("the cipher is %d\n",m);break;
}
getch();
}
2、代码的思想:首先随意输入两个素数p和q,然后利用算法计算出p*q 即n,再算出(p-1)*(q-1)即t,并且同时输出计算的结果n和t,接下来输入e,经过算法可以计算出d,由此可以知道RSA算法的公钥和私钥;接下来可以有两个选择:一选择输入明文,有明文经过算法可以计算出密文;二输入密文,有密文经过算法可以计算出明文。

3、运行以上代码就可以得到实验的结果。

五、实验结果
实验结果如下图所示:
六、实验心得:
通过这次的实验,了解了非对称密码算法RSA,会运用一些现成的算法进行编程,对一些比较复杂的算法开始基本认识并深刻的掌握。

在以后所涉及这方面的知识将会有全新的了解和掌握。





姓名:刘新平
专业:互联网
班级:10-03班
学号:541012010313。

相关文档
最新文档