RSA
# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
"""
import math
import random
def pan(x):
for i in range(2,int(math.sqrt(x))+1):
if(x%i==0):
return False
return True
def gcd(a,b):
if(b==0):
return a
else:
return gcd(b,a%b)
def getd(e,s):
for i in range(s):
if(i*e%s==1):
return i
def jiami(m,e,n):
res=1
for i in range(e):
res*=m%n
res%=n
return res
print("请输入p,q")
p,q=map(int,input().split())
while not(pan(p) and pan(q)):
p,q=map(int,input().split())
n=p*q
print("n=",n)
s=(p-1)*(q-1)
em=list()
for i in range(2,s):
if(gcd(s,i)==1):
em.append(i)
index=random.randint(0, len(em))
e=em[index]
d=getd(e,s)
print("e=",e)
print("d=",d)
m=input()
m=ord(m)
c=jiami(m,e,n)
mj=jiami(c,d,n)
print("加密结果:",c)
print("解密结果",chr(mj))