1. 首页 > 笙耀百科 >

rsa算法的密钥是如何选择的_rsa密钥计算

网络安全 简述RSA算法的原理和特点

1978年就出现了这种算法,它是第一个既能用于数据加密也能用于数字签名的算法。

rsa算法的密钥是如何选择的_rsa密钥计算rsa算法的密钥是如何选择的_rsa密钥计算


它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, Adi

Shamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。

RSA的安全性依赖于大数分解。公钥和私钥都是两个大素数( 大于 100

个十进制位)的函数。据猜测,从一个密钥和密文推断出明文的难度等同于分解两个

大素数的积。

密钥对的产生。选择两个大素数,p 和q 。计算:

n = p q

然后随机选择加密密钥e,要求 e 和 ( p - 1 ) ( q - 1 ) 互质。后,利用

Euclid 算法计算解密密钥d, 满足

e d = 1 ( mod ( p - 1 ) ( q - 1 ) )

其中n和d也要互质。数e和

n是公钥,d是私钥。两个素数p和q不再需要,应该丢弃,不要让任何人知道。

加密信息 m(二进制表示)时,首先把m分成等长数据块 m1 ,m2,..., mi ,块长s

,其中 2^s <= n, s 尽可能的大。对应的密文是:

ci = mi^e ( mod n ) ( a )

解密时作如下计算:

mi = ci^d ( mod n ) ( b )

RSA 可用于数字签名,方案是用 ( a ) 式签名, ( b )

式验证。具体操作时考虑到安全性和 m信息量较大等因素,一般是先作 HASH 运算。

RSA 的安全性。

RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因

为没有证明破解

RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成

为大数分解算法。目前, RSA

的一些变种算法已被证明等价于大数分解。不管怎样,分解n是显然的攻击方法。现

在,人们已能分解140多个十进制位的大素数。因此,模数n

必须选大一些,因具体适用情况而定。

RSA的速度。

由于进行的都是大数计算,使得RSA快的情况也比DES慢上100倍,无论是软件还是硬

件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。

RSA的选择密文攻击。

RSA在选择密文攻击面前很脆弱。一般攻击者是将某一信息作一下伪装(

Blind),让拥有私钥的实体签署。然后,经过计算就可得到它所想要的信息。实际上

,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构:

( XM )^d = X^d M^d mod n

前面已经提到,这个固有的问题来自于公钥密码系统的有用的特征--每个人都能使

用公钥。但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议

,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息

签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-Way Hash

Function

对文档作HASH处理,或同时使用不同的签名算法。在中提到了几种不同类型的攻击方

法。

RSA的公共模数攻击。

若系统有一个模数,只是不同的人拥有不同的e和d,系统将是危险的。普遍的

情况是同一信息用不同的公钥加密,这些公钥共模而且互质,那末该信息无需私钥就

可得到恢复。设P为信息明文,两个加密密钥为e1和e2,公共模数是n,则:

C1 = P^e1 mod n

C2 = P^e2 mod n

密码分析者知道n、e1、e2、C1和C2,就能得到P。

因为e1和e2互质,故用Euclidean算法能找到r和s,满足:

r e1 + s e2 = 1

假设r为负数,需再用Euclidean算法计算C1^(-1),则

( C1^(-1) )^(-r) C2^s = P mod n

另外,还有其它几种利用公共模数攻击的方法。总之,如果知道给定模数的一对e和d

,一是有利于攻击者分解模数,一是有利于攻击者计算出其它成对的e’和d’,而无

需分解模数。解决办法只有一个,那就是不要共享模数n。

RSA的小指数攻击。 有一种提高

RSA速度的建议是使公钥e取较小的值,这样会使加密变得易于实现,速度有所提高。

但这样作是不安全的,对付办法就是e和d都取较大的值。

RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研

究得广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为

人们接受,普遍认为是目前秀的公钥方案之一。RSA

的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难

度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数

人士倾向于因子分解不是NPC问题。

RSA的缺点主要有:A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次

一密。B)分组长度太大,为保证安全性,n 至少也要 600 bits

以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大

数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,SET(

Secure Electronic Transaction

)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。

DSS/DSA算法

Digital Signature Algorithm

(DSA)是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(Digital Signature

Standard)。算法中应用了下述参数:

p:L bits长的素数。L是64的倍数,范围是512到1024;

q:p - 1的160bits的素因子;

g:g = h^((p-1)/q) mod p,h满足h < p - 1, h^((p-1)/q) mod p > 1;

x:x < q,x为私钥 ;

y:y = g^x mod p ,( p, q, g, y )为公钥;

H( x ):One-Way Hash函数。DSS中选用SHA( Secure Hash Algorithm )。

p, q,

g可由一组用户共享,但在实际应用中,使用公共模数可能会带来一定的威胁。签名及

验证协议如下:

1. P产生随机数k,k < q;

2. P计算 r = ( g^k mod p ) mod q

s = ( k^(-1) (H(m) + xr)) mod q

签名结果是( m, r, s )。

3. 验证时计算 w = s^(-1)mod q

u1 = ( H( m ) w ) mod q

u2 = ( r w ) mod q

v = (( g^u1 y^u2 ) mod p ) mod q

若v = r,则认为签名有效。

DSA是基于整数有限域离散对数难题的,其安全性与RSA相比不多。DSA的一个重要特

点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们

是否是随机产生的,还是作了手脚。RSA算法却作不到。

本文来自CSDN博客,

设选择,利用rsa密钥算法,对26个字母中的第12个字母加密,请问公开密钥与私有

RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。在公开密钥密码体制中,加密密钥(即公开密钥)PK是息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。正是基于这种理论,1978年出现了的RSA算法,它通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长,一般使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前秀的公钥方案之一。SET(SecureElectronicTransaction)协议中要求CA采用2048bits长的密钥,其他实体使用1024比特的密钥。RSA密钥长度随着保密级别提高,增加很快。下表列出了对同一安全级别所对应的密钥长度。保密级别对称密钥长度(bit)RSA密钥长度(bit)ECC密钥长度(bit)保密年限808010241602010112112204822420301281283072256204019219276803842080256256153605122120这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:RonRivest,AdiShamir和LeonardAdleman。早在1973年,英国通信总局的数学家CliffordCocks就发现了类似的算法。但是他的发现被列为绝密,直到1998年才公诸于世。RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。RSA的算法涉及三个参数,n、e1、e2。其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)(q-1)互质;再选择e2,要求(e2e1)mod((p-1)(q-1))=1。(n,e1),(n,e2)就是密钥对。其中(n,e1)为公钥,(n,e2)为私钥。RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e2modn;B=A^e1modn;(公钥加密体制中,一般用公钥加密,私钥解密)e1和e2可以互换使用,即:A=B^e1modn;B=A^e2modn;

什么是RSA公钥密码

RSA公钥密码

RSA公钥密码是1977年由Ron Rivest、Adi Shamirh和LenAdleman在MIT(美国麻省理工学院〉开发的,1978年首次公布[RIVE78]。它是目前有影响的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击。目前它已被ISO为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想分解它们的乘积却极端困难,因此可以将乘积公开作为加密密钥。

RSA的算法结构相当简单,整个算法可以描述如下:

(1)选取两个大素数p和q(保密);

(2)计算n=pq(公开),γ=(p一1〉(q-1)(保密);

(3)随机选取整数e(公开,加密密钥),使得ed(ear)=1

(4)计算d(保密,私人密钥),使得ed≡1(mod r),即d=e-1(mod r);

(5)加密:c=me mod n

(6)解密:m=cd mod n。

利用RSA对被加密的信息m (长度小于log2n的整数)进行加密得到相应的密文c=me mod n;解密算法则是计算m=cd modn RSA的优点是不需要密钥分配,但缺点是速度慢。RSA公钥密码 RSA 公钥 密码

公开密钥密码体制的典型算法是什么

公开密钥密码体制是现代密码学中的密码机制之一。其核心思想是在公开和私人密钥的帮助下保护数据的机密性和完整性。 公开密钥密码体制的典型算法就是RSA算法。

RSA算法是一种常见的非对称密码算法,其基于非常复杂的数学问题,因此被认为是一种安全可靠的加密机制。该算法需要两个密钥:公钥和私钥。公钥用于加密数据,私钥用于解密数据。其加密过程如下:

1. 选择两个足够大的质数p和q,并将它们相乘产生一个大的正整数n。n即为密钥长度。

2. 根据p和q计算出n的欧拉函数总值,即φ(n) = (p-1) (q-1)。

3. 在φ(n)内随机选择一个较小的整数e,使得e和φ(n)互质。

4. 计算e的模反元素d,使得(e d) mod φ(n) =1。d即为私钥。

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

6. 对于任何消息M,计算它的整数表示m。

7. 将m加密为一个整数c,公式为c = m^e mod n。

8. 对于解密过程,使用私钥d,将加密得到的c对应到明文m。

目前,RSA算法已被广泛应用于金融、电子商务、数学学科和科学研究等领域。 另外,随着计算机性能的提高、量子计算机的发展,RSA算法在未来的密码学应用中仍然有很大的潜力和发展前景。

谁能通俗地讲下RSA算法?

这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。

RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。

RSA的算法涉及三个参数,n、e1、e2。

其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。

e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)(q-1)互质;再选择e2,要求(e2e1)mod((p-1)(q-1))=1。

(n及e1),(n及e2)就是密钥对。

RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e1 mod n;B=A^e2 mod n;

e1和e2可以互换使用,即:

A=B^e2 mod n;B=A^e1 mod n;

密码学中的rsa算法是什么

密码学中的rsa算法是什么如下:

算法原理:

RSA公开密钥密码体制的原理是:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥

算法描述:

RSA算法的具体描述如下:

(1)任意选取两个不同的大素数p和q计算乘积

(2)任意选取一个大整数e,满足整数e用做加密钥(注意:e的选取是很容易的,例如,所有大于p和q的素数都可用)

(3)确定的解密钥d,满足 是一个任意的整数;所以,若知道e和,则很容易计算出d ;

(4)公开整数n和e,秘密保存d [5] ;

(5)将明文m(m

(6)将密文c解密为明文m,解密算法为

然而只根据n和e(注意:不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密

安全性

RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,也并没有从理论上证明破译。

RSA的难度与大数分解难度等价。因为没有证明破解RSA就一定需要做大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法,即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至836084111@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息