RSA

rsa由来

RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。
rsa是一种非对称加密算法,RSA公开密钥密码体制是一种使用不同的加密密钥与解密密钥,所以用加密密钥解密是不行的。
rsa算法原理
根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥
互质数
互质数是公因数只有1的两个非零自然数.
例如:4和3是互质数因为他们的公因数时1.
欧拉函数
1.任意给定正整数n,请问在小于等于n的正整数之中,有多少个与n构成互质关系?
欧拉函数=φ(N)
例如:在1到8之中与8形成互质关系的事1,3,5,7,所以φ(N)=4.

RSA算法的具体描述如下

1.先找出质数 :p、Q。
2.计算N:N=PQ。(N的长度是密钥的长度)
3.利用欧拉函数φ(N) = (P-1)(Q-1)。
4.计算公钥E:E的取值必须是整数,E和φ(N)必须是互质数(1 5.计算私钥D:公式E
D%φ(N)=1。
6.加密:C=M^ E mod N(C是密文,M是明文)。
7.解密:M = C ^D mod N(c是密文,M是明文)。
buuctf中RSA

关于RSA的题目

RSA_第1张图片
附件中是
在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17求解出d作为flga提交。
已经有p,q,e,我们只需要求出φ(N)然后按照公式E*D%φ(N)=1求出d即可得到flag.
python代码


import gmpy2

p=473398607161

q=4511491

e=17

d=gmpy2.invert(e,(q-1)*(p-1))

print (d)

你可能感兴趣的:(RSA)