武汉大学应用密码学RSA加密解密大作业

合集下载

des作业答案和RSA作业

des作业答案和RSA作业

1.第一题DE 2C 3E 541101 1110 0010 1100 0011 1110 0101 0100A0 9B 02 5B1010 0000 1001 1011 0000 0010 0101 1011经过置换1 左移一位后变成c1和d1 0011000 01100011 1-8 1100010 00010010 9-16 0100010 00101101 17-24 1101010 0100 25-281110010 11001010 29-36 1000011 00011111 37-44 1110100 01001111 45-52 1111101 1011 53-56经置换2变成k1(12 A6 D1 C7 AD 7A)c1和d1继续左移1位变成c2和d2 00010010 1100011010100110 0010010011010001 01011010100011000111 1001010010101101 0011111001111010 100111110111经置换2变成k2(A8 68 15 C5 D7 9B)c2和d2继续左移2位后变成c3和d3 10101000 0001100001101000 1001000100010101 01101010001111000101 0101000011010111 1111101010011011 011111011110经置换2变成k3(05 2F 28 DF 16 69)0000010100101111001010001101111100010110011010012.在DES 算法中,S2盒的输入为101101,求S2盒输出 01004.1 在使用RSA 的公钥体制中,已截获发给某用户的密文为c=10,该用户的公钥pk = 5, n=35,那么明文m 等于多少?为什么能根据公钥可以破解密文?解:n=p*q (p 和q 都是素数),n=35 故解出p=5 ,q=7 ;()()()1124n p q ϕ=--=;又因为()1mod pk sk n ϕ*≡,而pk=5 故可解出sk=5;mod sk m c n ==105 mod 35=5 。

实验一 RSA加解密

实验一 RSA加解密

实验一密码学相关实验之RSA加解密算法的实现一、实验目的在本实验中,用VC/ C/C++/Java实现RSA的加解密算法。

完成实验后将能够深入理解RSA 加解密算法及其在VC/ C/C++/Java中的实现过程。

二、实验条件熟悉VC/ C/C++/Java开发环境和有关RSA算法的有关知识;一台安装有VC/ C/C++/Java的计算机。

三、实验内容RSA算法实验1、生成密钥参数①选取两互异大素数:p和q②计算 N=p×q 和φ(N)=(p-1) ·(q-1)③选一整数 e:满足1< e<φ(N), gcd(φ(N), e)=1④在模φ(N)下,计算e的乘法逆元d:e · d = 1 mod φ(N)⑤E、公钥pk=(N, e),私钥sk=d (p, q不再需要,可以销毁)2、加密算法给定一个整数 M < N,计算C = M e mod N3、解密算法M = C d mod N四、实验要求提示1. 从键盘输入两个素数 p,q,并输出参数 N, φ(N), e, d2.从键盘输入明文数据 m,计算出密文数据 c3. 从键盘输入密文数据 c,计算出明文数据 m.4.如何判断一个数是素数5.如何判断两个数互素6.乘法逆元怎么实现7.当p=7,q=17,e=5,d=77 ,加密m=19. 实验得出结果。

8.如果加密的消息为char类型,如何实现加解密?(不强制要求做,但能实现的同学有加分!!)9.认真填写实验报告,电子版,下次课上交。

以下以VC为例:1.实验环境的建立主要内容:在VC中建立一个项目。

操作步骤:(1)进入VC环境;(2)在VC环境中,执行“File | New”命令,在“New”对话框中(如图1)选择“Projects”页,在其左侧的列表框中选择“MFC AppWizard [exe]”,在右侧的“Project name”文本框中输入新的项目名称“RSA加解密算法”,在“Location”文本框中选择项目的存储路径(比如选择“d:\rsa”)。

(完整word版)武汉大学现代密码学试卷(含答案)

(完整word版)武汉大学现代密码学试卷(含答案)

武汉大学计算机学院信息安全专业2004级“密码学"课程考试题(卷面八题,共100分,在总成绩中占70分)一、单表代替密码(10分)①使加法密码算法称为对合运算的密钥k称为对合密钥,以英文为例求出其对合密钥,并以明文M=WEWILLMEETATMORNING 为例进行加解密,说明其对合性。

②一般而言,对于加法密码,设明文字母表和密文字母表含有n个字母,n为≥1的正整数,求出其对合密钥k。

二、回答问题(10分)①在公钥密码的密钥管理中,公开的加密钥Ke和保密的解密钥Kd的秘密性、真实性和完整性都需要确保吗?说明为什么?②简述公钥证书的作用?三、密码比较,说明两者的特点和优缺点。

(10分)对DES和AES进行比较,说明两者的特点和优缺点。

四、设A=[01,02,03,04]T,B=[b0,b1,b2,b3]T,利用反对数表查表计算AES中的列混淆,求出B。

(10分)五、设g(x)=x4+x2+1,g(x)为GF(2)上的多项式,以其为连接多项式组成线性移位寄存器。

画出逻辑框图。

设法遍历其所有状态,并写出其状态变迁及相应的输出序列。

(15分)六、考虑RSA密码体制:(15分)1.取e=3有何优缺点?取d=3安全吗?为什么?2.设n=35,已截获发给某用户的密文C=10,并查到该用户的公钥e=5,求出明文M。

七、令素数p=29,椭圆曲线为y2=x3+4x+20 mod 29,求出其所有解点,并构成解点群,其解点群是循环群吗?为什么?。

(15分)八、在下述站点认证协议中函数f起什么作用?去掉f行不行?为什么?(15分)设A,B是两个站点,A是发方,B是收方。

它们共享会话密钥Ks ,f是公开的简单函数。

A认证B是否是他的意定通信站点的协议如下:1.A产生一个随机数RN,并用Ks对其进行加密:C=E(RN,Ks),并发C给B.同时A对RN进行f变换,得到f(RN)。

2.B收到C后,解密得到RN=D(C,Ks)。

武汉大学密码学实验报告

武汉大学密码学实验报告

武汉大学计算机学院课程实验(设计)报告课程名称:密码学专业:信息安全姓名:学号:学期:RSA加密算法RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。

在非对称加密(或称公开密钥加密)体系中,密钥被分解为一对,即公开密钥(公钥)和私有密钥(私钥)。

这对密钥中任何一把都可以作为公开密钥,通过非保密方式向他人公开,而另一把作为私有密钥,加以妥善保存。

公开密钥用于加密,私有密钥用于解密,私有密钥只能由生成密钥的交换方掌握,公开密钥可广泛公布,但它只对应于生成密钥的交换方。

非对称加密方式可以使通信双方无须事先交换密钥就可以建立安全通信,广泛应用于身份认证、数字签名等信息交换领域。

非对称加密体系一般是建立在某些已知的数学难题之上,是计算机复杂性理论发展的必然结果。

最具有代表性是RSA公钥密码体制。

算法的基本思路如图1所示,过程是首先随意选择两个大的素数p和q,p不等于q,计算N=pq。

根据欧拉函数,求得r = (p-1)(q-1)选择一个小于r 的整数 e,求得e 关于模r 的模逆元素,记为为d。

将 p 和 q 的记录销毁。

(N,e)是公钥,(N,d)是私钥。

然后加密消息,对于消息M采用模幂运算C ≡ Me(mod N)获得密文M;最后对密文C采用解密公式M= Cd(mod N)。

图1在设计RSA程序时首先由RandomPrime()获得随机数p,q,,其中p,q是由IsPrime()函数看它们是否能够除2,3,5,7,判断是否是素数。

利用GenKeyPair()函数通过GetDNum()GetENum()分别获得<e,m>和<d,m>。

当用户输入要加密的字符串后,利用Encryptor()函数可以对字符串进行加密,然后用Dencryptor()函数进行解密。

实验4_公钥密码RSA加解密算法模拟程序

实验4_公钥密码RSA加解密算法模拟程序

实验四:公钥密码RSA加解密算法模拟程序
一、实验目的
1、编写简单的RSA加解密程序。

2、理解公钥密码体系的相关知识,尤其是RSA算法的加密与解密计算过程。

二、实验内容
编写程序实现RSA加解密算法,并通过demo验证算法的正确性。

具体要求如下:
1)能够对指定字符串加密并对加密后的密文进行解密,通过对比解密后的字符串与源字符串,证明程序加密与解密的正确性。

2)输出与加解密相关的各项参数,例如公钥、私钥、通过乘积运算构成大整数的两个素数等。

三、实验步骤及实验结果
1、实验步骤如下:
1)利用参考代码在VS2008开发工具编中写一个控制台程序
2)经过编译、链接生成可执行程序,运行程序,结果显示为:(因为调用Random函数,所以每次运行的结果都会不一样)
3)此外生成界面如下,输入明文
过乘积运算构成大整数的两个素数
5)按下“加密”,得到加密的密文;按下“解密”,得到解密的明文
四、实验结果分析
通过编写模拟RSA的加密与解密的程序,成功加密明文,得到加密的密文,并且解密后得到相应明文。

五、实验心得体会
通过学习的相应的RSA的加密与解密的知识,学会了RSA的加密解密的具体步骤。

同时了解了相关加密解密的过程。

密码学-RSA加密解密算法的实现课程设计报告

密码学-RSA加密解密算法的实现课程设计报告

密码学课程报告《RSA加密解密算法》专业:信息工程(信息安全)班级:1132102学号:************姓名:***指导老师:***时间:2014年1月10号一、课程设计的目的当前最著名、应用最广泛的公钥系统RSA是在1978年,由美国麻省理工学院(MIT)的Rivest、Shamir和Adleman在题为《获得数字签名和公开钥密码系统的方法》的论文中提出的。

RSA算法是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。

它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册,人们用公钥加密文件发送给个人,个人就可以用私钥解密接受。

为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。

公钥加密算法中使用最广的是RSA。

RSA算法研制的最初理念与目标是努力使互联网安全可靠,旨在解决DES算法秘密密钥的利用公开信道传输分发的难题。

而实际结果不但很好地解决了这个难题;还可利用RSA来完成对电文的数字签名以抗对电文的否认与抵赖;同时还可以利用数字签名较容易地发现攻击者对电文的非法篡改,以保护数据信息的完整性。

此外,RSA加密系统还可应用于智能IC卡和网络安全产品。

二、RSA算法的编程思路1.确定密钥的宽度。

2.随机选择两个不同的素数p与q,它们的宽度是密钥宽度的1/2。

3.计算出p和q的乘积n 。

4.在2和Φ(n)之间随机选择一个数e , e 必须和Φ(n)互素,整数e用做加密密钥(其中Φ(n)=(p-1)*(q-1))。

5.从公式ed ≡ 1 mod Φ(n)中求出解密密钥d 。

6.得公钥(e ,n ), 私钥 (d , n) 。

7.公开公钥,但不公开私钥。

8.将明文P (假设P是一个小于n的整数)加密为密文C,计算方法为:C = Pe mod n9.将密文C解密为明文P,计算方法为:P = Cd mod n然而只根据n和e(不是p和q)要计算出d是不可能的。

rsa加密算法详解及例题

rsa加密算法详解及例题

RSA加密算法详解及例题
RSA加密算法是一种非对称加密算法,其安全性基于对极大整数做因数分解的困难性。

以下是RSA加密算法的详解及例题:
1. 密钥生成:
* 随机选择两个质数P和Q,越大越安全。

* 计算它们的乘积N=P*Q。

* 计算欧拉函数φ(N)=(P-1)*(Q-1)。

* 随机选择一个整数E,条件是1<E<φ(N),且E与φ(N)互质。

* 计算E对于φ(N)的模反元素D,使得EDmodφ(N)=1,即D=E-1modφ(N)。

* 公钥为(E, N),私钥为(D, N)。

2. 加解密过程:
* 加密:明文M进行加密后得到密文C,计算公式为C=MemodN。

* 解密:将密文C进行解密后得到明文M,计算公式为M=CdmodN。

例题:在RSA加密体制中,已知素数P=7,Q=11,公钥E=13,试计算私钥D并给出对明文M=5的加密,求其密文。

解:首先,根据上述算法进行密钥生成。

根据素数P和Q得到N=77。

计算φ(N)=60。

因为E小于φ(N)且与φ(N)互质,选择E=13作为公钥。

根据公式计算D模反元素得到D=7。

现在有公钥(E, N)=(13, 77)和私钥(D, N)=(7, 77)。

接下来,用公钥加密明文M=5得到密文C=5^13mod77=15。

所以,密文为15。

此例题仅展示了RSA加密算法的基本原理和步骤,实际应用中需要考虑更多安全因素和操作细节。

实验二 RSA加密解密

实验二 RSA加密解密

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

实验原理RSA算法的加密和解密过程在RSA算法中,每个实体有自己的公钥(e,n)及私钥(d,n),其中n=p*q,p,q是两个大素数,e*d=1modф(n),显然e应该满足gcd(e,ф(n))=1。

实体B加密消息m,将密文在公开信道上传送给实体A。

实体A接到密文后对其解密。

具体算法如下。

1)公钥的生成算法RSA的公钥生成算法十分简单,可以分为四步:(1)选择两个素数,p和q;(2)计算n=p×q和o=(p-1)×(q-1);(3)选择一个与o互质的数e;(4)找出一个d,使得e×d=1modz。

公开密钥是由(e,n)构成,私有密钥由(d,n)构成。

2)加密算法实体B的操作如下:(1)得到实体A的真实公钥(e,n);(2)把消息表示成整数m,0<m≤n-1;(3)使用平方-乘积算法,计算C=Ek(m)=memodn;(4)将密文C发送给实体A。

核心代码#include<iostream>#include<cmath>using namespace std;void main(){int p,q;cout<<"请输入两个较大的素数:"<<endl;cin>>p>>q;cout<<"p="<<p<<",q="<<q<<endl;int n,o;n=p*q;o=(p-1)*(q-1);cout<<"n="<<n<<",o="<<o<<endl;cout<<"请从【0,"<<o-1<<"】中选择一个与"<<o<<"互素的数e:"<<endl;int e,i;float d;cin>>e;for(i=1;;i++){d=(float)(o*i+1)/e;if(d-(int)d==0)break;}cout<<"e="<<e<<",d="<<d<<endl;cout<<"公开密钥Pk={e,n}={"<<e<<","<<n<<"}"<<endl; cout<<"秘密密钥Sk={d,n}={"<<d<<","<<n<<"}"<<endl; cout<<endl;cout<<"请输入要加密的正整数(以-1结束):"<<endl; int m1[500],m3[500],m4[7500];double m2[500];int j;for(j=0;j<500;j++){cin>>m1[j];if(m1[j]==-1)break;m2[j]=pow(m1[j],e);m4[j]=m2[j]/n;m3[j]=m2[j]-m4[j]*n;}cout<<"密文为:"<<endl;int k;for(k=0;k<j;k++)cout<<m3[k]<<" ";cout<<endl;}实验总结与心得体会通过做这个实验充分了解其原理,在这个实验中,这个实验中公钥和私钥的产生没什么问题,而在加密与解密的过程中,由于中间结果会非常大,pow函数不能实现功能,所以必须将中间结果对n取模,才能使计算切实可行。

密码学实验-RSA加密算法

密码学实验-RSA加密算法

密码学平时实验报告一、课题内容和要求1.实验环境实验主机操作系统为Windows 72.实验内容1.给定p,q,e,编写RSA的加解密算法2.调研各个语言的加密算法包二、课题需求分析RSA算法的具体描述如下:(1)任意选取两个不同的大素数p和q计算乘积n = p×q,φ(n) = (p-1)×(q-1)。

(2)任意选取一个大整数e,满足,整数e用做加密钥(注意:e的选取是很容易的,例如,所有大于p和q的素数都可用);(3)确定的解密钥d,满足d*e ≡ 1mod φ(n),d为e的乘法逆元(4)公开整数n和e,秘密保存d ;(5)将明文m(m<n是一个整数)加密成密文c,加密算法为C = M^e (mod n)(6)将密文c解密为明文m,解密算法为M = C^d (mod n)然而只根据n和e(注意:不是p和q)要计算出d是不可能的。

因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密。

具体的,求逆元采用扩展欧几里德算法和费马小定理+快速幂取模算法结合。

(后者要求模逆元的模为素数,这里φ(n) = (p-1)×(q-1)不适用,但我还是加上了)。

判断是否为质数采用了埃氏筛算法。

1.所谓扩展欧几里德算法,就在求gcd(a,b)的同时,顺带着求出x,y使贝祖等式ax+by= gcd(a,b)成立。

在求模逆元a*x=1 modb时,将原式化为ax+by=1= gcd(a,b)。

运用扩展欧几里德算法即可求出a的模b逆元x。

2.所谓费马小定理/欧拉定理求逆元,就是费马小定理:若p为素数,则有ap−1≡1(modp)ap−1≡1(modp)ap−2∗a≡1(modp)ap−2∗a≡1(modp)ap−2ap−2就是a在mod p意义下的逆元啦。

欧拉定理:若a、p互素,则有aφ(p)≡1(modp)aφ(p)≡1(modp)(费马小定理的一般形式)aφ(p)∗a≡1(modp)aφ(p)∗a≡1(modp)aφ(p)−1aφ(p)−1就是a在mod p意义下的逆元啦。

实验3_RSA加解密算法

实验3_RSA加解密算法

实验3:RSA加密、解密算法实验一、实验目的掌握数论的重要概念和算法(模逆算法、大整数幂的模运算)。

掌握RSA算法。

二、RSA算法原理:1.生成密钥参数①任取两个比较大的素数p,q②计算整数n,n=p*q③计算欧拉函数φ(n)=(p-1)*(q-1)④计算一个较小的正整数w,w应该满足条件gcd(w,φ(n))=1⑤计算一个正整数 d,d应该满足条件w d≡1 (mod φ(n))注:参数(w,n)用于加密,参数(d,n)用于解密2. 加密算法假设需要加密的明文是整数m,加密后的密文是c3.解密算法三、实验任务【实验任务一】(必做)小素数RSA算法①.从键盘输入两个素数p,q,并输出参数n,φ(n),w,d②.从键盘输入明文数据m,计算出密文数据c,输出c③.根据计算机出的密文数据c,计算出明文数据m,输出m④从键盘输入明文字符串mStr,例如"I love you",或者"我爱你"都可以,计算出密文数据cStr,输出cStr⑤解密计算,根据密文数据cStr,计算出明文数据mStr【实验任务二】(可选)大素数RSA算法①给定一个比较整数下限xmin(比如要求xmin>100000),xmin可以大于现有的整数表示范围,因此要求用大整数表示。

②自动计算选取两个大于xmin的大素数p,q,并输出p,q③从键盘输入明文字符串mStr,例如"I love you",或者"我爱你"都可以,计算出密文数据cStr,输出cStr④解密计算,根据密文数据cStr,计算出明文数据mStr。

RSA公钥密码算法的加密和解密

RSA公钥密码算法的加密和解密

RSA的安全性
对RSA的攻击方法主要有以下三种: 1. 强力攻击(穷举法):尝试所有可能的私有密 钥 2. 数学分析攻击:有多种数学攻击方法,其本质 等价于试图分解两个素数的乘积 3. 计时攻击:记录计算机解密消息所用的时间。
谢谢!
a a
m
(
bi 0
2i )
a
bi 0
( 2i )
a modn ( a
m bi 0
( 2i )
) modn ( [a
bi 0
( 2i )
modn]) modn
密钥产生
确定两个素数p和q 选择e或d计算另外一个
素数选取
为了避免攻击者用穷举法求出p和q,应该从足够 大的集合中选取p和q。即p和q必须是大素数。 没有产生任意的大素数的有效技术,通常的作法 是随机选取一个需要的数量级的奇数并检验这个 数是否是素数。若不是则挑选下一个随机数直至 检测到素数为止。
公钥:(e, n) =(7, 33) 密钥:(d, n) =(3, 33) 加密算法: 密文c=m7mod33 解密算法: 明文m=c3mod33 对m=8加密 密文 c=87mod33= 2097152 mod33=2 对c=2解密 明文m=23mod33=8
RSA算法中的计算问题
1. RSA的加密与解密过程 RSA的加密、解密过程都为求一个整数的整数次 幂,再取模。如果按其含义直接计算,则中间结 果非常大,有可能超出计算机所允许的整数取值 范围。 而用模运算的性质: (a×b) mod n=[(a mod n)×(b mod n)] mod n 就可减小中间结果
假设m为要传送的报文。
(1)选取两个大素数 p, q (2) 计算n=pq, (n)=(p-1)(q-1) (3) 随机选取e: 1<e<(n),与(n)互素 (4) 使用扩展欧几里德算法计算 即ed = 1 mod (n) (5)以(e,n)为公钥,(d,n)为密钥

RSA加解密实验报告

RSA加解密实验报告

else //printf("e不符合条件,请重新输入:"); { AfxMessageBox(L"e不符合条件,请重新输入"); } } ExtendedEuclidean(e, //printf("d = %d\n", //printf("公钥:( %d //printf("私钥:( %d y, &d); d); , %d )\n", e, n); , %d )\n", d, n); //计算d
// } }
return ciphertext;
CString RSA::decrypt(CString ciphertext, int key) { CString plaintext; int i, j, b, a, sum, k; int t, temp, l = 0, ch = 1, f, l1;
} ExtendedEuclidean(e, //printf("d = %d\n", //printf("公钥:( %d //printf("私钥:( %d y, &d); d); , %d )\n", e, n); , %d )\n", d, n); //计算d
while (ch<n)//明文分块 { ch = ch * 2; l++; } l = l - 1; //每块长度 //printf("%d\n", l); //printf("请选择:1.加密; 2.解密;\n"); //scanf("%d", &b); b = 1; if (b == 1) //加密 { // printf("请输入明文:"); // scanf("%s", &plain); int ii; for ( ii = 0; ii < plaintext.GetLength(); ii++) { plain[ii] = plaintext[ii]; } plain[ii] = '\0'; t = strlen(plain);

rsa加密 实验报告

rsa加密 实验报告

rsa加密实验报告RSA加密实验报告概述RSA加密算法是一种非对称加密算法,广泛应用于信息安全领域。

本实验旨在通过实际操作,深入理解RSA加密算法的原理、过程和应用。

实验目的1. 理解RSA加密算法的原理和基本概念;2. 掌握RSA加密算法的加密和解密过程;3. 了解RSA加密算法的应用场景和安全性。

实验材料1. 一台计算机;2. 编程语言或工具,如Python。

实验步骤1. 生成密钥对首先,我们需要生成一对RSA密钥,包括公钥和私钥。

公钥用于加密数据,私钥用于解密数据。

在Python中,可以使用`cryptography`库来生成密钥对。

2. 加密数据选择一段需要加密的数据,可以是文本、图片或其他文件。

将数据使用公钥进行加密,得到密文。

在Python中,可以使用`cryptography`库中的RSA加密函数来实现。

3. 解密数据使用私钥对密文进行解密,还原成原始数据。

在Python中,可以使用`cryptography`库中的RSA解密函数来实现。

4. 实验结果分析分析实验结果,包括加密后的密文和解密后的明文。

观察密文的长度和结构,以及解密过程是否成功。

同时,可以比较不同数据加密的结果,探讨RSA加密算法的安全性和可靠性。

实验注意事项1. 密钥的安全性:私钥是解密数据的关键,必须妥善保管,避免泄露给他人。

公钥可以公开使用,但也需要注意保护,以防止被篡改。

2. 数据大小限制:RSA加密算法对数据的大小有一定限制,一般建议将较大的数据先进行分块处理,然后分别加密和解密。

3. 算法优化:RSA加密算法的性能较低,特别是对大素数的计算。

在实际应用中,可以采用一些优化技术,如使用快速模幂算法,提高加密和解密的效率。

实验结论通过本次实验,我们深入了解了RSA加密算法的原理和过程。

RSA加密算法具有较高的安全性,适用于保护敏感数据的加密和解密。

然而,由于其计算复杂度较高,对于大数据的加密和解密可能存在性能问题。

《应用密码学》课程试卷(1)参考答案

《应用密码学》课程试卷(1)参考答案

2008——2009学年第一学期课程名称:应用密码学使用班级:信息安全06级1、2、3班命题系别: 网络工程学院 命题人:张仕斌、张金全、万武南 第一题 填空(共15个空,每空1分,计15分)1、102、64,563、1604、分组链接(CBC)模式,输出反馈(OFB)模式5、2n-16、5127、k8、主密钥,数据加密密钥 9、4,2,110、9第二题 判断题(共10题,每题1分,计10分)1、√2、√3、×4、×5、√6、×7、×8、×9、× 10√第三题 单项选择(共10题,每题2分,计20分)。

1、C2、C3、B4、A5、A6、D7、D8、B9、C 10、B第四题(说明:本题由三个小题组成,要求给出解题过程,共16分)1、简述RSA算法;(4分)提示:密钥产生过程、加密过程、解密过程及各个过程中的注意点。

2、在RSA算法密钥产生过程中,设p=13,q=23,取公钥e=29,求私钥d;(要求:给出必要计算过程。

6分)3、设RSA算法的参数选择如上题所述,求消息m=9所对应的密文;(要求:给出必要计算过程。

6分)解:1) 1)密钥的产生①选两个保密的大素数p和q。

②计算n=p×q,φ(n)=(p-1)(q-1),其中φ(n)是n的欧拉函数值。

③选一整数e,满足1<e<φ(n),且gcd(φ(n),e)=1。

(1分)④计算d,满足d·e≡1 modφ(n),即d是e在模φ(n)下的乘法逆元,因e 与φ(n)互素,由模运算可知,它的乘法逆元一定存在。

⑤以{e,n}为公开钥,{d,n}为秘密钥。

(1分)加密:先将明文比特串分组,使每个分组对应的十进制数小于n,即分组长度小于log2n。

然后对每个明文分组m作加密运算:c≡m e mod n(1分)解密:对密文分组的解密运算为:m≡c d mod n(1分)2)由p=13,q=23,可得n=299(1分),φ(n)=264(1分)。

rsa例题

rsa例题

rsa例题RSA算法是一种非对称加密算法,其安全性大大超过了对称加密算法,因此在网络安全领域中被广泛应用。

RSA 算法以两个大质数为基础,具体实现时包括了公钥和私钥的生成、加密和解密等步骤。

本文将介绍RSA算法的基本原理,及其具体实现过程,同时给出一些实际的RSA算法例题,以帮助读者更全面地了解RSA算法。

一、RSA算法的基本原理RSA算法的基本原理非常简单,通过选取两个大质数p 和q,计算出n=p*q,则n为公钥中的一个参数。

接着再选一个介于1和(p-1),(q-1)之间的整数e,使e与(p-1)*(q-1)互质,则e为公钥中的另一个参数。

随后,我们得出了公钥P = {e, n}。

通过公钥P可以对明文M进行加密。

具体来说,对于任意明文M,计算出密文C=pow(M,e) mod n。

其中,pow(M,e)表示将M的e次方乘起来,mod n表示将其对n取模。

此时,得出的C即为密文。

在得到密文C之后,可以通过私钥S解密,从而得到明文M。

私钥S是另一个关键参数,由p、q、e计算而来。

私钥S中包含了两个参数d和n,其中d为满足ed mod (p-1)(q-1) = 1的整数。

私钥S可表示为{d,n}。

对于密文C,可以通过计算C的d次方再取模n,得到明文M。

具体来说,明文M的值等于pow(C,d) mod n,其中,pow(C,d)表示C的d次方,mod n表示将其对n取模。

二、RSA算法的具体实现过程生成公钥和私钥1.选择两个大质数p, q。

2.求出n=p*q。

3.计算出(p-1)*(q-1)。

4.选取一个介于1和(p-1), (q-1)之间的整数e,并且e与(p-1)*(q-1)互质。

5.计算满足ed mod(p-1)*(q-1)=1的整数d,其中,d 为私钥。

6.公钥为P={e,n},私钥为S={d,n}。

加密明文1.将明文M转化为ASCII码,并将其表示为整数。

2.使用公钥P对明文M进行加密,计算密文C=pow(M,e) mod n。

RSA加密解密方案

RSA加密解密方案

RSA加密解密方案密钥生成:1.首先,选择两个不同的质数p和q,并计算它们的乘积n。

这将成为RSA算法的一个关键参数。

2.计算n的欧拉函数φ(n),其中φ(n)=(p-1)(q-1)。

3.选择一个整数e,使得1<e<φ(n)且e与φ(n)互质。

e将作为公钥的一部分,用于加密明文。

4.使用扩展欧几里得算法,计算出d,使得d是e模φ(n)的逆元。

d 将作为私钥的一部分,用于解密密文。

5.公钥是由n和e组成,私钥是由n和d组成。

加密:1. 将明文M划分为固定长度的块,每个块都是一个数字。

将每个块x加密为密文C,使用公钥(n,e)和加密函数C = (x^e) mod n。

这一步骤可以通过使用快速幂算法来加速计算。

2.得到密文后,可以将其发送给接收者。

解密:1. 接收到密文C后,使用私钥(n,d)和解密函数x = (C^d) mod n来解密密文。

与加密过程类似,可以使用快速幂算法加速计算。

2.得到明文后,可以对其进行进一步处理或显示给用户。

安全性分析:RSA加密解密方案的安全性基于大整数分解问题的困难性。

假设攻击者获得了公钥n和密文C,但不知道私钥d。

要获得明文M,攻击者需要计算C的d次幂模n的结果,即M = (C^d) mod n。

然而,计算d次幂模n的结果在已知n的情况下是非常困难的,除非攻击者能够分解n为其质因数的乘积。

由于大整数的分解是一个计算上非常昂贵的问题,因此RSA 加密解密方案被认为是安全的。

总结:RSA加密解密方案是一种非对称加密算法,通过使用密钥生成、加密和解密步骤来实现加密和解密过程。

它基于大整数分解问题的困难性,提供了强大的安全性。

然而,RSA加密解密方案也有一些缺点,包括计算复杂度较高和密钥分发和管理问题。

因此,在实际应用中,RSA通常与其他加密算法一起使用,以提供更高的安全性和效率。

实验四RSA加解密算法的实现

实验四RSA加解密算法的实现

实验四RSA加解密算法的实现RSA加解密算法是一种非对称加解密算法,可以用于数据的安全传输与存储。

本实验旨在通过实现RSA加解密算法,进一步了解该算法的原理与实现过程。

1.RSA算法原理RSA算法基于数论中的欧拉定理和大素数分解难题。

其原理如下:(1)选择两个大素数p和q,并计算它们的乘积n。

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

(3)选择一个小于φ(n)且与φ(n)互质的整数e,作为公钥的指数。

(4) 求解模方程e·d≡1(mod φ(n)),得到整数 d,作为私钥的指数。

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

(6) 加密时,将明文 m 使用公钥加密得到密文 c,即c≡m^e(mod n)。

(7) 解密时,将密文 c 使用私钥解密得到明文 m,即m≡c^d(mod n)。

2.RSA加解密算法实现为了实现RSA加解密算法,我们需要完成以下几个步骤:(1)选取两个大素数p和q,并计算n和φ(n)。

(2)选择一个与φ(n)互质的整数e。

(3) 计算 d,满足e·d≡1(mod φ(n))。

(4)加密明文m,计算密文c。

(5)解密密文c,计算明文m。

3.代码实现以下是RSA加解密算法的Python代码实现:```pythonimport randomdef is_prime(n):if n <= 1:return Falsefor i in range(2, int(n ** 0.5) + 1):if n % i == 0:return Falsereturn Truedef gcd(a, b):while b:a,b=b,a%breturn adef extended_gcd(a, b):if b == 0:return a, 1, 0g, x, y = extended_gcd(b, a % b) return g, y, x - (a // b) * y def generate_keys(:p = random.randint(100, 1000) while not is_prime(p):p+=1q = random.randint(100, 1000) while not is_prime(q):q+=1n=p*qphi_n = (p - 1) * (q - 1)e = random.randint(2, phi_n - 1) while gcd(e, phi_n) != 1:e+=1_, d, _ = extended_gcd(e, phi_n) d = d % phi_nreturn (n, e), (n, d)def encrypt(message, public_key):n, e = public_keycipher_text = []for char in message:cipher = pow(ord(char), e, n)cipher_text.append(cipher)return cipher_textdef decrypt(cipher_text, private_key):n, d = private_keyplain_text = ""for cipher in cipher_text:plain = pow(cipher, d, n)plain_text += chr(plain)return plain_text#测试public_key, private_key = generate_keys message = "Hello RSA!"cipher_text = encrypt(message, public_key) plain_text = decrypt(cipher_text, private_key)print("明文:", message)print("密文:", cipher_text)print("解密后的明文:", plain_text)```4.实验结果与分析运行以上代码,我们可以得到以下结果:```明文: Hello RSA!密文:[852,295,295,247,282,831,425,898,596,898,968,613,851,852,852]解密后的明文: Hello RSA!```可以看到,明文经过加密后得到了一串数字密文,再经过解密后可以得到原始的明文信息。

应用密码学 实验3 RSA加解密算法

应用密码学 实验3  RSA加解密算法

《应用密码学》课程实验报告四、实验步骤(1)了解RSA加密和解密原理RSA的安全基于大数分解的难度。

其公开密钥和私人密钥是一对大素数(100到200个十进制数或更大)的函数。

从一个公开密钥和密文中恢复出明文的难度等价于分解两个大素数之积。

(2)编写程序:#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("明文为%d\n",m);break;}}五、实验结果与分析1.测试数据及结果当P=13, q=17 时,对4567 进行加密,运行结果如下:2.实验中遇到的问题及解决办法对其中e 的合法性判断、主函数实现的顺序以及相关提示信息做了补充与修改并加上了注释,这样程序可读性更强,运行时更容易操作,思路也更加严密.3.实验中尚未解决的问题及不足第一次取e 为10,与t 不互素,提示需重新输入,输入19 后,便可以进行正确操作。

RSA加解密实验报告

RSA加解密实验报告

RSA加解密实验报告一、实验目的1.了解RSA加解密算法的原理;2.掌握RSA加解密算法的实现方法;3.通过实验验证RSA算法的正确性和安全性。

二、实验原理RSA算法是一种非对称加密算法,其加解密过程使用了非对称的公钥和私钥来进行。

具体的实现步骤如下:1.选择两个不同的大质数p和q;2.计算n=p*q;3.选择一个整数e,使得1<e<(p-1)(q-1),且e与(p-1)(q-1)互质;4. 计算d,使得d * e ≡ 1 (mod (p-1)(q-1));5.公钥为(n,e),私钥为(n,d);6. 加密过程:密文 = 明文^e mod n;7. 解密过程:明文 = 密文^d mod n。

三、实验步骤1.随机选择两个大质数p和q,并计算得到n=p*q;2.选择一个与(p-1)(q-1)互质的整数e;3. 计算得到d,使得d * e ≡ 1 (mod (p-1)(q-1));4.分别编写加密和解密的函数,函数输入为明文/密文和公钥/私钥,输出为密文/明文;5.使用公钥对明文进行加密,并使用私钥对密文进行解密,检验解密结果是否与原明文一致。

四、实验结果和分析通过实验我们得到了加解密函数的结果,在加密过程中,我们使用了公钥对明文进行加密,得到了密文,而在解密过程中,我们使用了私钥对密文进行解密,得到了明文。

实验结果表明,解密的结果与原始明文是完全一致的。

五、实验总结RSA算法是一种非对称加密算法,通过实验我们了解了该算法的基本原理和实现方法。

实验结果表明,RSA算法能够有效地保护敏感信息的安全性,加密过程中使用的公钥对外公开,而解密过程中使用的私钥只有持有者自己拥有,这种非对称的加解密方式使RSA算法成为了目前最常用的加密算法之一、实验还可以从多个角度进行扩展,例如对加密强度进行测试,探究不同密钥长度对安全性的影响等。

[1] Stallings, W. (2005).《密码与网络安全(第三版)》. 人民邮电出版社.。

RSA加密与解密

RSA加密与解密

RSA加密与解密数据信息安全对我们每个⼈都有很重要的意义,特别是⼀些敏感信息,可能⼀些类似于收货地址、⼿机号还没引起⼤家的注意。

但是最直⽩的,银⾏卡、姓名、⼿机号、⾝份证号,如果这些信息被⿊客拦截到,他就可以伪装成你,把你的钱都取⾛。

那我们该怎么防⽌这样的事情发⽣?报⽂加密解密,加签验签。

我害怕什么我害怕卡⾥的钱被别⼈取⾛我害怕转账的时候,报⽂被⿊客拦截到,篡改信息转到别⼈的账户。

我害怕我的敏感信息被有⼼⼈获取做⼀笔游戏充值,半个⼩时就收到各种游戏⼴告,我并不能抵挡诱惑我要做什么1. 交易报⽂不被篡改防⽌报⽂被篡改,需要对报⽂进⾏验签操作。

2. 敏感信息不被读取防⽌报⽂被读取,则需要将敏感信息加密。

公钥和私钥公钥和私钥,加密解密和加签验签。

加解密⽤来保证数据安全,加签验签⽤来证明⾝份。

商户⽣成⼀对公私钥(商公,商私),商户会把公钥给银⾏;银⾏也会⽣成⼀对公私钥(银公,银私),银⾏会把公钥给商户。

也就是说:商户有银⾏的公钥,⾃⼰的公钥和私钥。

银⾏有商户的公钥,⾃⼰的公钥和私钥加密解密保证数据安全:商户使⽤⾃⼰公钥加密,银⾏没有商户私钥解不开报⽂,排除商户使⽤⾃⼰的私钥加密,银⾏使⽤商户公钥解密。

理论上可⾏,然⽽会出现这种情况,商户和银⾏1,2,3都使⽤相同的公私钥,那么⾃⼰私钥加密后发送给银⾏1的报⽂,被银⾏2截取到也可以被解密开,违背了我们加密的⽬的--保证数据安全,排除。

商户使⽤银⾏的公钥加密,让银⾏⽤⾃⼰的私钥解密。

理论上可⾏,然⽽会出现这种情况,银⾏会和商户A,B,C都使⽤相同的公私钥,那么商户A和商户B发送过去的报⽂,银⾏都能解开,⽽且只有此银⾏的私钥可以解开,达成了我们的⽬的。

但是新的问题出现了,这种情况假如商户A模拟商户B的报⽂把商户B的钱转移⾛该怎么办?所以除了加密解密,还需要加签验签。

加签验签证明⾝份:加密已经完成,现在的问题只有怎么让银⾏区分这笔请求是商户A发的,还是商户B发的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 对RSA算法的理解RSA加密算法是一种非对称加密算法,它基于一个非常简单的数论思想:“将两个素数乘起来是很容易的,但是分解该乘积是非常困难的”。

1.1加解密步骤(1)生成公钥和私钥a)随机生成两个不相等的大素数p和q,计算N=p*q;b)根据欧拉函数,求出φ=(p-1)*(q-1);c)选择一个小于r的整数e,求e关于r的模反元素d使得e*d mod φ=1得到公钥<N,e>,私钥<N,d>(2)加密给定明文m,公钥<N,e>,计算密文c = m e(N)。

(3)解密给定密文c,私钥<N,d>,计算明文m’ = c d(N)。

1.2素性检验RSA算法的实现难点之一是生成大素数,这就需要生成一个大数并对其进行素性检验。

素性检验有很多种方法。

其中包括确定性方法和随机方法。

确定性方法有试除法(埃拉托斯特尼筛法),卢卡斯-莱默检验法和AKS素数测试。

常见的随机方法有费马素性检验,米勒-拉宾检验和欧拉-雅科比测试。

本次作业采用就是米勒-拉宾检验方法。

米勒-拉宾(Miller Rabin) 算法原理:要测试N 是否为素数,首先将N-1 分解为2s d。

在每次测试开始时,先随机选一个介于[1, N-1]的整数a,之后如果对所有的r∈[0, s-1],若a d mod N ≠ 1 且a2^rd mod N ≠1,则N 是合数。

否则,N 有3/4 的概率为素数。

1.3安全问题(1)公共模数攻击。

每个人具有相同的r,但有不同的指数e和d,这是不安全的。

(2)低加密指数攻击。

如果选择了较低的e值,虽然可以加快计算速度,但存在不安全性。

(3)低解密指数攻击。

如果选择了较低的d值,也是不安全的。

(4)选择密文攻击。

如A想让T对一个T不愿意签名的消息m’签名,A首先选择一个任意值x,计算y=x e(mod r),然后要求T对m=ym’签名,A最后计算(m d mod r)x-1 mod r =( ym’) d x-1mod r= m’d mod r。

还有一些不是直接对RSA的算法本身进行的攻击,如中间人攻击、时间攻击、边信道攻击等。

2.具体实现2.1函数说明void ProducePrime(JTextField prime):使用JA V A的Biginteger生成512位的大数,再用Miller Robin算法检验是否是素数。

参数prime即为生成的大素数。

boolean MillerRobin(BigInteger n):用Miller Robin检验判断大数n是否是素数。

BigInteger modex(BigInteger a, BigInteger b, BigInteger n):模幂运算,计算a b mod nBigInteger inverse(BigInteger a, BigInteger b):求逆运算,计算a-1 ( b )String Encode(String Plaintext, BigInteger n, int nLen, int m, JTextField e):加密,用公钥(n,e)对明文Plaintext加密。

String Decode(String Ciphertext, BigInteger n, int m, JTextField d):解密,用私钥d对密文Ciphertext解密。

2.2JA V A代码import java.math.BigInteger;import java.util.Random;import java.util.Scanner;import javax.swing.JTextField;public class RSA {public static void main(String[] args) {String s;JTextField p = new JTextField(35);JTextField q = new JTextField(35);JTextField e = new JTextField(35);JTextField d = new JTextField(35);ProducePrime(p);ProducePrime(q);BigInteger pp = new BigInteger(p.getText());BigInteger qq = new BigInteger(q.getText());BigInteger oo = (pp.subtract(new BigInteger("1"))).multiply(qq.subtract(new BigInteger("1")));BigInteger ee;do {ee = new BigInteger(100, new Random()).mod(oo);} while (MillerRobin(ee) == false);e.setText(ee.toString());d.setText(inverse(ee, oo).toString());BigInteger n = pp.multiply(qq);int nLen = n.bitLength();int m = (int) (Math.ceil((double) (nLen) / 16.0));nLen = (nLen - 1) / 16;String Ciphertext = new String();String Plaintext = new String();System.out.println("P:" + p.getText());System.out.println("Q:" + q.getText());System.out.println("公钥:" + e.getText());System.out.println("私钥:" + d.getText());Scanner scanner = new Scanner(System.in);System.out.println("输入要加密字符串:");s = scanner.nextLine();Ciphertext = Encode(s, n, nLen, m, e);System.out.println("加密结果:" + Ciphertext);Plaintext = Decode(Ciphertext, n, m, d);System.out.println("解密结果:" + Plaintext);}//产生大素数public static void ProducePrime(JTextField prime) {BigInteger n = new BigInteger("0");Random r = new Random();do {n = new BigInteger(512, 5, r);prime.setText(n.toString());} while (MillerRobin(n) == false);}//Miller Robin素性检验public static boolean MillerRobin(BigInteger n) {int time = 1000;BigInteger m = n.mod(new BigInteger("2"));if (m.equals(new BigInteger("0"))) {return false;}int s = 0;int k = 0;BigInteger t = n.subtract(new BigInteger("1"));while (t.mod(new BigInteger("2")).equals("0")) {t.divide(new BigInteger("2"));++s;}for (int i = 0; i < time; ++i) {BigInteger a = new BigInteger(100, new Random()).mod(n.subtract(new BigInteger("3"))).add(new BigInteger("2"));BigInteger b = modex(a, t, n);if (b.equals(new BigInteger("1")) == false&& b.equals(n.subtract(new BigInteger("1"))) == false) {k = 1;while (k == s&& b.equals(n.subtract(new BigInteger("1"))) == false) {b = b.multiply(b).mod(n);if (b.equals(new BigInteger("1"))) {return false;}++k;}if (b.equals(n.subtract(new BigInteger("1"))) == false) {return false;}}}return true;}//模幂运算public static BigInteger modex(BigInteger a, BigInteger b, BigInteger n) {BigInteger m = new BigInteger("1");while (b.equals(new BigInteger("0")) == false) {if (b.mod(new BigInteger("2")).equals(new BigInteger("1"))) {m = m.multiply(a).mod(n);}a = a.multiply(a).mod(n);b = b.divide(new BigInteger("2"));}return m;}//求逆运算public static BigInteger inverse(BigInteger a, BigInteger b) {BigInteger n1 , n2 , n3, m, t, b1;n1 = new BigInteger("1");n2 = new BigInteger("0");b1 = b;while (b.equals(new BigInteger("0")) == false) {m = a.divide(b);n3 = n1.subtract(m.multiply(n2));if (pareTo(new BigInteger("0")) != -1) {n3 = n3.mod(b1);} else {n3 = b1.subtract(n3.multiply(new BigInteger("-1")).mod(b1));}n1 = n2;n2 = n3;t = b;b = a.mod(b);a = t;}if (a.equals(new BigInteger("1"))) {return n1;} else {return new BigInteger("0");}}//加密public static String Encode(String Plaintext, BigInteger n, int nLen, int m, JTextField e) {BigInteger r = new BigInteger("0");StringBuffer outBuf = new StringBuffer();int i, j, k;for (i = 0; i < Plaintext.length(); i = j) {BigInteger t = new BigInteger("0");for (j = i; j < i + nLen && j < Plaintext.length(); j++) {t = t.shiftLeft(16);long num = Plaintext.charAt(j);t = t.add(BigInteger.valueOf(num));}r = modex(t, new BigInteger(e.getText()), n);String buf = new String();for (k = 0; k < m; ++k) {long num = (r.and(BigInteger.valueOf(65535))).longValue();r = r.shiftRight(16);buf = (char) (num) + buf;}outBuf = outBuf.append(buf);}return outBuf.toString();}//解密public static String Decode(String Ciphertext, BigInteger n, int m, JTextField d) {StringBuffer outBuf = new StringBuffer();BigInteger r = new BigInteger("0");int i, j;for (i = 0; i < Ciphertext.length(); i += j) {BigInteger t = new BigInteger("0");for (j = 0; j < m && j + i < Ciphertext.length(); j++) {t = t.shiftLeft(16);long num = (long) (Ciphertext.charAt(j + i));t = t.add(BigInteger.valueOf(num));}r = modex(t, new BigInteger(d.getText()), n);String buf = new String();while (pareTo(new BigInteger("0")) > 0) {long num = (r.and(BigInteger.valueOf(65535))).longValue();buf = (char) (num) + buf;r = r.shiftRight(16);}outBuf = outBuf.append(buf);}return outBuf.toString();}}2.3测试结果:P:129036805470851517375614397900032888596537198498489613936254861169557 280794177755476583936161903531948987784914983448340462980850402666689 13843973354103033Q:965485259575386626661798155084845386764376902206479716964206598369971506074458894922536120328881558956967066309443036648783409751809379053 0180407555360339公钥:1133142713903219484415537969751私钥:289229897767689634195491655141643249544903709281685759316055760288297 329286785308503278756568252277106589199437078007305924525623679341478 908797523966221390308041636992564515935685594854485373424597837714855 144013790195492262743427356815741901651405003362999246563628660918125 34177904849175286307833237971415输入要加密字符串:密码学算法RSA加密结果:偮钘?兄埅????烄証箕???霑痘????啛猝市????鎈????釤?????????????筕???酪? ??霧?羳???鑮だ解密结果:密码学算法RSA。

相关文档
最新文档