rsa加密算法破解 rsa加密算法破解 RSA加密算法的破解

导读:爱华网网友为您分享以下“RSA加密算法的破解”资讯,希望对您有所帮助,感谢您对aIhUaU.com的支持!

RSA加密算法的破解

1. 什么是RSA加密算法 RSA加密算法是在1977年开发的,是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

在RSA算法中,我们先要获得两个不同的质数P和Q做为算法因子,再找出一个正整数E,使得E与 ( P - 1 ) * ( Q - 1 ) 的值互质,这个E就是私钥。找到一个整数D,使得( E * D ) mod ( ( P - 1 ) * ( Q - 1 ) ) = 1成立,D就是公钥1。设N为P和Q的乘积,N则为公钥2。加密时先将明文转换为一个或一组小于N的整数I,并计算ID mod N的值M,M就密文。解密时将密文ME mod N,也就是M的E次方再除以N所得的余数就是明文。

因为私钥E与( P - 1 ) * ( Q - 1 )互质,而公钥D使( E * D ) mod ( ( P - 1 ) * ( Q - 1 ) ) = 1成立。破解者可以得到D和N,如果想要得到E,必须得出( P - 1 ) * ( Q - 1 ),因而必须先对N进行因数分解。如果N很大那么因数分解就会非常困难,所以要提高加密强度P和Q的数值大小起着决定性的因素。一般来讲当P和Q都大于2128时,按照目前的机算机处理速度破解基本已经不大可能了。

2. RSA算法的原理

(1) 费马小定理:有N为任意正整数,P为素数,且N不能被P整除,则有

NP mod P = N

(2) 积模分解公式有X、Y和Z三个正整数,且X * Y大于Z,则有:( X * Y )

mod Z = ( ( X mod Z ) * ( Y mod Z ) ) mod Z

(3)有P和Q两个互质数,如果有X mod P = 0,X mod Q = 0,则有:X mod PQ

= 0

rsa加密算法破解 rsa加密算法破解 RSA加密算法的破解

(4)有P和Q两个互质数,设有整数X和Y满足Y mod P = X,Y mod

Q = X,则有:Y mod PQ = X

1

(5)有P和Q两个互质数,设有整数X和Y满足Y mod PQ = X ,

则有:Y mod P = X,Y mod Q = X

(6) RSA定理::若P和Q是两个相异质数,另有正整数R和M,其中M的

值与( P - 1 )( Q - 1 )的值互质,并使得( RM ) mod ( P - 1 )( Q - 1 ) = 1。有正整数A,且A < PQ,设C = AR mod PQ,B = CM mod PQ则有:A = B

3. RSA加密算法的缺点

1)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。

2)分组长度太大,为保证安全性,n 至少也要 600 bits 以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,SET(Secure Electronic Transaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。

3)安全性, RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价,而且密码学界多数人士倾向于因子分解不是NPC问题。

4.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))

2

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 = mi

4、消息也可以用d 加密用e 解密

C 源程序

#include <stdio.h>

intcandp(inta,intb,int c) //数据处理函数,实现幂的取余运算 { int r=1;

b=b+1;

while(b!=1)

{

r=r*a;

r=r%c;

b--;

}

printf("%dn",r);

return r;

}

int fun(intx,int y) //公钥e 与t 的互素判断

{

int t;

while(y)

{

t=x;

x=y;

y=t%y;

}

if(x == 1)

return 0; //x 与y 互素时返回0

else

return 1; //x 与y 不互素时返回1

3

}

void main()

{

intp,q,e,d,m,n,t,c,r;

printf("请输入两个素数p,q: ");

scanf("%d%d",&p,&q);

n=p*q;

printf("计算得n 为%3dn",n);

t=(p-1)*(q-1); //求n 的欧拉数

printf("计算得t 为%3dn",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 求出私钥d

printf("经计算d 为%dn",d);

printf("加密请输入1n"); //加密或解密选择

printf("解密请输入2n");

scanf("%d",&r);

switch(r)

{

case 1: printf("请输入明文m: "); //输入要加密的明文数字

scanf("%d",&m);

c=candp(m,e,n);

printf("密文为%dn",c);break;

case 2: printf("请输入密文c: "); //输入要解密的密文数字

scanf("%d",&c);

m=candp(c,d,n);

printf("明文为%dn",m);break;

}

}

4


百度搜索“爱华网”,专业资料,生活学习,尽在爱华网  

爱华网本文地址 » http://www.aihuau.com/a/411851/785211670886.html

更多阅读

如何破解文件夹加密软件加密的文件夹 文件夹加密破解

????? 利用软件给文件夹加密很多人都在用,只不过很多的此类软件都是纸老虎,高手喝着咖啡就搞定了。我们把此类软件称为伪文件夹加密软件。此类软件的特点是:1、加密时间很短,几乎瞬间完成。一个文件夹要复制还需要一定时间的吧,它的加密

破解QQ空间加密相册的方法 qq空间加密相册查看器

很多朋友在逛好友空间的时候,想看看自己的好友相片怀旧怀旧,可是有些相册加密了。这时候是不是很纠结呢?今天下载之家小编就为大家带来一篇关于怎么破解qq空间加密相册的文章。方法很简单,而且适用任何QQ空间版本!第一步、打开一个加密的

转 如何破解和复制加密光盘经检验有效 dvd加密光盘复制

此方法是比较简单的方法教学光盘,用光驱运行太慢,我怀疑是光盘有坏道,且反复插盘太麻烦,所以想把光盘复制到硬盘用虚拟光驱运行,却发现光盘被加密了,用NERO或WINISO等都无法把光盘的内容复制或拷贝出来。经过反复查证和实验终于找到了破解

声明:《rsa加密算法破解 rsa加密算法破解 RSA加密算法的破解》为网友等闲人分享!如侵犯到您的合法权益请联系我们删除