p=5
q=222823
n=p*q
phi=(p-1)*(q-1)
e=65537
d=pow(e,-1,phi)
s=input("请输入字符串:")
s2=int(input("加密输入1,解密输入2:"))
l=list(map(ord,s))
if s2==1:
for i in range(len(l)):
l[i]=pow(l[i],e,n)
else:
for i in range(len(l)):
l[i]=pow(l[i],d,n)
l=map(chr,l)
print(''.join(l))
原理讲解:
RSA:设质数p、qn=pqϕ(n)=(p−1)(q−1)e=65537(常用,如果和ϕ(n)不互质则可切换为别的互质的数字)ed=1 (mod ϕ(n))(在Python8以下的版本可以自己编写拓展欧几里得,Python8及以上可以使用d=pow(e,−1,ϕ(n))编写)设要加密的数字为x,加密后的数字为y:y=xe (mod n)x=yd (mod n)公开n、e、y如果想要得到d就得知道ϕ(n)想要知道ϕ(n)就得知道p和q想要知道p和q就得分解n想要分解n就得一个一个尝试我只需要设大p,q就可以实现加密
有帮助,赞一个