2024年9月rsa算法原理?谁能通俗地讲下RSA算法

 更新时间:2024-09-21 09:53:18

  ⑴rsa算法原理?谁能通俗地讲下RSA算法

  ⑵RSA算法是最常用的非对称加密算法,它既能用于加密,也能用于数字签名。RSA的安全基于大数分解的难度。其公钥和私钥是一对大素数(到位十进制数或更大的函数。从一个公钥和密文恢复出明文的难度,等价于分解两个大素数之积。我们可以通过一个简单的例子来理解RSA的工作原理。为了便于计算。在以下实例中只选取小数值的素数p,q,以及e,假设用户A需要将明文“key”通过RSA加密后传递给用户B,过程如下:设计公私密钥(e,n)和(d,n)。令p=,q=,得出n=p×q=×=;f(n)=(p-)(q-)=×=;取e=,(与互质则e×d≡modf(n),即×d≡mod。通过试算我们找到,当d=时,e×d≡modf(n)同余等式成立。因此,可令d=。从而我们可以设计出一对公私密钥,加密密钥(公钥为:KU=(e,n)=(,),解密密钥(私钥为:KR=(d,n)=(,)。英文数字化。将明文信息数字化,并将每块两个数字分组。假定明文英文字母编码表为按字母顺序排列数值。则得到分组后的key的明文信息为:,,。明文加密。用户加密密钥(,)将数字化明文分组信息加密成密文。由C≡Me(modn)得:C(密文)≡M(明文^e(modn)==≡^mod;C(密文)≡M(明文^e(modn)==≡^mod;C(密文)≡M(明文^e(modn)==≡^mod;所以密文为..。密文解密。用户B收到密文,若将其解密,只需要计算,即:M(明文)≡C(密文^d(modn)==≡^mod;M(明文)≡C(密文^d(modn)==≡^mod;M(明文)≡C(密文^d(modn)==≡^mod;转成明文..。根据上面的编码表将其转换为英文,我们又得到了恢复后的原文“key”。当然,实际运用要比这复杂得多,由于RSA算法的公钥私钥的长度(模长度要到位甚至位才能保证安全,因此,p、q、e的选取、公钥私钥的生成,加密解密模指数运算都有一定的计算程序,需要仰仗计算机高速完成。

  ⑶谁能通俗地讲下RSA算法

  ⑷这种算法年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:RonRivest,AdiShamir和LeonardAdleman。RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。RSA的算法涉及三个参数,n、e、e。其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。e和e是一对相关的值,e可以任意取,但要求e与(p-)*(q-)互质;再选择e,要求(e*e)mod((p-)*(q-))=。(n及e),(n及e)就是密钥对。RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^emodn;B=A^emodn;e和e可以互换使用,即:A=B^emodn;B=A^emodn;

  ⑸RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是年由罗纳德·李维斯特(RonRivest、阿迪·萨莫尔(AdiShamir和伦纳德·阿德曼(LeonardAdleman一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。

  ⑹年,在英国政府通讯总部工作的数学家克利福德·柯克斯(CliffordCocks在一个内部文件中提出了一个相同的算法,但他的发现被列入机密,一直到年才被发表。

  ⑺RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。

  ⑻假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。人们已能分解多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定。

  ⑼参考资料来源:百度百科-rsa

  ⑽什么是RSA算法,有公钥和私钥对他的处理过程是这样的

  ⑾RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。RSA的算法涉及三个参数,n、e、e。其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。e和e是一对相关的值,e可以任意取,但要求e与(p-)*(q-)互质;再选择e,要求(e*e)mod((p-)*(q-))=。(n及e),(n及e)就是密钥对。RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^emodn;B=A^emodn;e和e可以互换使用,即:A=B^emodn;B=A^emodn;补充回答:对明文进行加密,有两种情况需要这样作:、您向朋友传送加密数据,您希望只有您的朋友可以解密,这样的话,您需要首先获取您朋友的密钥对中公开的那一个密钥,e及n。然后用这个密钥进行加密,这样密文只有您的朋友可以解密,因为对应的私钥只有您朋友拥有。、您向朋友传送一段数据附加您的数字签名,您需要对您的数据进行MD之类的运算以取得数据的“指纹“,再对“指纹“进行加密,加密将使用您自己的密钥对中的不公开的私钥。您的朋友收到数据后,用同样的运算获得数据指纹,再用您的公钥对加密指纹进行解密,比较解密结果与他自己计算出来的指纹是否一致,即可确定数据是否的确是您发送的、以及在传输过程中是否被篡改。密钥的获得,通常由某个机构颁发(如CA中心),当然也可以由您自己创建密钥,但这样作,您的密钥并不具有权威性。计算方面,按公式计算就行了,如果您的加密强度为位,则结果会在有效数据前面补以补齐不足的位数。补入的并不影响解密运算。

  ⑿RSA加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广泛的非对称加密算法,于年由美国麻省理工学院(MIT的三位学着:RonRivest、AdiShamir和LeonardAdleman共同提出。它的原理较为简单,假设有消息发送方A和消息接收方B,通过下面的几个步骤,就可以完成消息的加密传递:消息发送方A在本地构建密钥对,公钥和私钥;消息发送方A将产生的公钥发送给消息接收方B;B向A发送数据时,通过公钥进行加密,A接收到数据后通过私钥进行解密,完成一次通信;反之,A向B发送数据时,通过私钥对数据进行加密,B接收到数据后通过公钥进行解密。由于公钥是消息发送方A暴露给消息接收方B的,所以这种方式也存在一定的安全隐患,如果公钥在数据传输过程中泄漏,则A通过私钥加密的数据就可能被解密。如果要建立更安全的加密消息传递模型,需要消息发送方和消息接收方各构建一套密钥对,并分别将各自的公钥暴露给对方,在进行消息传递时,A通过B的公钥对数据加密,B接收到消息通过B的私钥进行解密,反之,B通过A的公钥进行加密,A接收到消息后通过A的私钥进行解密。当然,这种方式可能存在数据传递被模拟的隐患,但可以通过数字签名等技术进行安全性的进一步提升。由于存在多次的非对称加解密,这种方式带来的效率问题也更加严重。

  ⒀RSA公钥加密算法是年由RonRivest、AdiShamirh和LenAdleman在(美国麻省理工学院开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

  ⒁RSA算法的原理及演算过程

  ⒂RSA算法非常简单,概述如下:找两素数p和q取n=p*q取t=(p-)*(q-)取任何一个数e,要求满足e《t并且e与t互素(就是最大公因数为取d*e%t==这样最终得到三个数:nde设消息为数M(M《n)设c=(M**d)%n就得到了加密后的消息c设m=(c**e)%n则m==M,从而完成对c的解密。注:**表示次方,上面两式中的d和e可以互换。在对称加密中:nd两个数构成公钥,可以告诉别人;ne两个数构成私钥,e自己保留,不让任何人知道。给别人发送的信息使用e加密,只要别人能用d解开就证明信息是由你发送的,构成了签名机制。别人给你发送信息时使用d加密,这样只有拥有e的你能够对其解密。rsa的安全性在于对于一个大数n,没有有效的方法能够将其分解从而在已知nd的情况下无法获得e;同样在已知ne的情况下无法求得d。RSA简洁幽雅,但计算速度比较慢,通常加密中并不是直接使用RSA来对所有的信息进行加密,最常见的情况是随机产生一个对称加密的密钥,然后使用对称加密算法对信息加密,之后用RSA对刚才的加密密钥进行加密。最后需要说明的是,当前小于位的N已经被证明是不安全的自己使用中不要使用小于位的RSA,最好使用位的。

  ⒃它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:RonRivest,AdiShamir和LeonardAdleman。但RSA的安全性一直未能得到理论上的证明。它经历了各种攻击,至今未被完全攻破。一、RSA算法:首先,找出三个数,p,q,r,其中p,q是两个相异的质数,r是与(p-)(q-)互质的数......p,q,r这三个数便是privatekey接著,找出m,使得rm==mod(p-)(q-).....这个m一定存在,因为r与(p-)(q-)互质,用辗转相除法就可以得到了.....再来,计算n=pq.......m,n这两个数便是publickey编码过程是,若资料为a,将其看成是一个大整数,假设a《n....如果a》=n的话,就将a表成s进位(s《=n,通常取s=^t),则每一位数均小於n,然后分段编码......接下来,计算b==a^mmodn,(《=b《n),b就是编码后的资料......解码的过程是,计算c==b^rmodpq(《=c《pq),於是乎,解码完毕......等会会证明c和a其实是相等的:)如果第三者进行窃听时,他会得到几个数:m,n(=pq),b......他如果要解码的话,必须想办法得到r......所以,他必须先对n作质因数分解.........要防止他分解,最有效的方法是找两个非常的大质数p,q,使第三者作因数分解时发生困难.........《定理》若p,q是相异质数,rm==mod(p-)(q-),a是任意一个正整数,b==a^mmodpq,c==b^rmodpq,则c==amodpq证明的过程,会用到费马小定理,叙述如下:m是任一质数,n是任一整数,则n^m==nmodm(换另一句话说,如果n和m互质,则n^(m-)==modm)运用一些基本的群论的知识,就可以很容易地证出费马小定理的........《证明》因为rm==mod(p-)(q-),所以rm=k(p-)(q-)+,其中k是整数因为在modulo中是preserve乘法的(x==ymodzandu==vmodz=》xu==yvmodz),所以,c==b^r==(a^m)^r==a^(rm)==a^(k(p-)(q-)+)modpq.如果a不是p的倍数,也不是q的倍数时,则a^(p-)==modp(费马小定理)=>a^(k(p-)(q-))==modpa^(q-)==modq(费马小定理)=>a^(k(p-)(q-))==modq所以p,q均能整除a^(k(p-)(q-))-=》pq|a^(k(p-)(q-))-即a^(k(p-)(q-))==modpq=》c==a^(k(p-)(q-)+)==amodpq.如果a是p的倍数,但不是q的倍数时,则a^(q-)==modq(费马小定理)=》a^(k(p-)(q-))==modq=》c==a^(k(p-)(q-)+)==amodq=》q|c-a因p|a=》c==a^(k(p-)(q-)+)==modp=》p|c-a所以,pq|c-a=》c==amodpq.如果a是q的倍数,但不是p的倍数时,证明同上.如果a同时是p和q的倍数时,则pq|a=》c==a^(k(p-)(q-)+)==modpq=》pq|c-a=》c==amodpqQ.E.D.这个定理说明a经过编码为b再经过解码为c时,a==cmodn(n=pq)....但我们在做编码解码时,限制《=a《n,《=c《n,所以这就是说a等於c,所以这个过程确实能做到编码解码的功能.....二、RSA的安全性RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前,RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定。三、RSA的速度由于进行的都是大数计算,使得RSA最快的情况也比DES慢上倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。四、RSA的选择密文攻击RSA在选择密文攻击面前很脆弱。一般攻击者是将某一信息作一下伪装(Blind),让拥有私钥的实体签署。然后,经过计算就可得到它所想要的信息。实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构:(XM)^d=X^d*M^dmodn前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥。但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-WayHashFunction对文档作HASH处理,或同时使用不同的签名算法。在中提到了几种不同类型的攻击方法。五、RSA的公共模数攻击若系统中共有一个模数,只是不同的人拥有不同的e和d,系统将是危险的。最普遍的情况是同一信息用不同的公钥加密,这些公钥共模而且互质,那末该信息无需私钥就可得到恢复。设P为信息明文,两个加密密钥为e和e,公共模数是n,则:C=P^emodnC=P^emodn密码分析者知道n、e、e、C和C,就能得到P。因为e和e互质,故用Euclidean算法能找到r和s,满足:r*e+s*e=假设r为负数,需再用Euclidean算法计算C^(-),则(C^(-))^(-r)*C^s=Pmodn另外,还有其它几种利用公共模数攻击的方法。总之,如果知道给定模数的一对e和d,一是有利于攻击者分解模数,一是有利于攻击者计算出其它成对的e’和d’,而无需分解模数。解决办法只有一个,那就是不要共享模数n。RSA的小指数攻击。有一种提高RSA速度的建议是使公钥e取较小的值,这样会使加密变得易于实现,速度有所提高。但这样作是不安全的,对付办法就是e和d都取较大的值。RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题。RSA的缺点主要有:A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。B)分组长度太大,为保证安全性,n至少也要bits以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,SET(SecureElectronicTransaction)协议中要求CA采用比特长的密钥,其他实体使用比特的密钥。

  ⒄什么是RSA非对称加密

  ⒅非对称密钥——RSA算法RSA算法是最流行的公钥密码算法,使用长度可以变化的密钥。RSA是第一个既能用于数据加密也能用于数字签名的算法。RSA算法原理如下:.随机选择两个大质数p和q,p不等于q,计算N=pq;.选择一个大于小于N的自然数e,e必须与(p-)(q-)互素。.用公式计算出d:d×e=(mod(p-)(q-))。.销毁p和q。最终得到的N和e就是“公钥”,d就是“私钥”,发送方使用N去加密数据,接收方只有使用d才能解开数据内容。RSA的安全性依赖于大数分解,小于位的N已经被证明是不安全的,而且由于RSA算法进行的都是大数计算,使得RSA最快的情况也比DES慢上倍,这是RSA最大的缺陷,因此通常只能用于加密少量数据或者加密密钥,但RSA仍然不失为一种高强度的算法。

  ⒆什么是RSA算法,求简单解释

  ⒇RSA公钥加密算法是年由RonRivest、AdiShamirh和LenAdleman在(美国麻省理工学院开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。由于进行的都是大数计算,使得RSA最快的情况也比DES慢上好几倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。RSA的速度比对应同样安全级别的对称密码算法要慢倍左右。基础大数分解和素性检测——将两个大素数相乘在计算上很容易实现,但将该乘积分解为两个大素数因子的计算量是相当巨大的,以至于在实际计算中是不能实现的。.RSA密码体制的建立:()选择两个不同的大素数p和q;()计算乘积n=pq和Φ(n)=(p-)(q-);()选择大于小于Φ(n)的随机整数e,使得gcd(e,Φ(n))=;()计算d使得de=modΦ(n);()对每一个密钥k=(n,p,q,d,e),定义加密变换为Ek(x)=xemodn,解密变换为Dk(x)=ydmodn,这里x,y∈Zn;()以{e,n}为公开密钥,{p,q,d}为私有密钥。.RSA算法实例:下面用两个小素数和来建立一个简单的RSA算法:()选择两个素数p=和q=;()计算n=pq==,计算Φ(n)=(p-)(q-)==;()选择一个随机整数e=,它小于Φ(n)=并且于互素;()求出d,使得de=mod且d《,此处求出d=,因为==+;()输入明文M=,计算模的次幂,Me==mod,传出密文C=;()接收密文,计算模的次幂;Cd=≡mod得到明文。

您可能感兴趣的文章:

相关文章