首先说一下求d的答案,ed=1mod(p-1)(q-1)=1mod60即7d=1mod60的意思是e与d的乘积对(p-1)(q-1)取余结果是1,题目给出e=7,(p-1)(q-1)可以求得是60,即(7d)%60=1【%是取余符号】,可以得出43*7=301=5*60+1
题目已给出M=17,秘文C=M^e mod n即M的e次方对n取余,代入数值为17^5%143=10
希望对你有帮助
B. 一个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。
rsa简洁幽雅,但计算速度比较慢,通常加密中并不是直接使用rsa
来对所有的信息进行加密,
最常见的情况是随机产生一个对称加密的密钥,然后使用对称加密算法对信息加密,之后用
RSA对刚才的加密密钥进行加密。
最后需要说明的是,当前小于1024位的N已经被证明是不安全的
自己使用中不要使用小于1024位的RSA,最好使用2048位的。
C. 利用RSA算法运算,如果p=11,q=13, e=103,对明文3进行加密.求d及密文
取2个质数p=11,q=13,p和q的乘积为n=p×q=143,算出φ(n)=n-p-q+1=120;再选取一个与φ(n)互质的数,例如e=7,则公开密钥=n,e=143,7.
对于这个e值,用欧几里德扩展算法可以算出其逆:d=103.因为e×d=7×103=721,满足e×d mod z =1;即721 mod 120=1成立.则秘密密钥=n,d=143,103,
设发送方需要发送机密信息(明文)m=3,发送方已经从公开媒体得到了接收方的公开密钥n,e=143,7,于是发送方算出加密后的密文c= m的e次方 mod n=42