rsa加密算法 ppt课件
- 格式:ppt
- 大小:264.50 KB
- 文档页数:7
RSA算法RSA算法非常简单,概述如下:找两素数p和q取n=p*q取t=(p-1)*(q-1)取任何一个数e,要求满足e<t并且e与t互素(就是最大公因数为1)取d*e%t==1这样最终得到三个数:n d e设消息为数M(M<n)设c=(M**d)%n就得到了加密后的消息c设m=(c**e)%n则m==M,从而完成对c的解密。
注:**表示次方,上面两式中的d和e可以互换。
在对称加密中:n d两个数构成公钥,可以告诉别人;n e两个数构成私钥,e自己保留,不让任何人知道。
给别人发送的信息使用e加密,只要别人能用d解开就证明信息是由你发送的,构成了签名机制。
别人给你发送信息时使用d加密,这样只有拥有e的你能够对其解密。
rsa的安全性在于对于一个大数n,没有有效的方法能够将其分解从而在已知n d的情况下无法获得e;同样在已知n e的情况下无法求得d。
<二>实践接下来我们来一个实践,看看实际的操作:找两个素数:p=47q=59这样n=p*q=2773t=(p-1)*(q-1)=2668取e=63,满足e<t并且e和t互素用perl简单穷举可以获得满主e*d%t==1的数d:C:\Temp>perl-e"foreach$i(1..9999){print($i),last if$i*63%2668==1}"847即d=847最终我们获得关键的n=2773d=847e=63取消息M=244我们看看加密:c=M**d%n=244**847%2773用perl的大数计算来算一下:C:\Temp>perl-Mbigint-e"print244**847%2773"465即用d对M加密后获得加密信息c=465解密:我们可以用e来对加密后的c进行解密,还原M:m=c**e%n=465**63%2773:C:\Temp>perl-Mbigint-e"print465**63%2773"244即用e对c解密后获得m=244,该值和原始信息M相等。