使用python实现rsa算法代码
RSA算法是一种非对称加密算法,是现在广泛使用的公钥加密算法,主要应用是加密信息和数字签名。
维基百科给出的RSA算法简介如下:
假设Alice想要通过一个不可靠的媒体接收Bob的一条私人讯息。她可以用以下的方式来产生一个公钥和一个私钥:
随意选择两个大的质数p和q,p不等于q,计算N=pq。
根据欧拉函数,不大于N且与N互质的整数个数为(p-1)(q-1)
选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1)
用以下这个公式计算d:d×e≡1(mod(p-1)(q-1))
将p和q的记录销毁。
(N,e)是公钥,(N,d)是私钥。(N,d)是秘密的。Alice将她的公钥(N,e)传给Bob,而将她的私钥(N,d)藏起来。
#!/usr/bin/envpython
defrange_prime(start,end):
l=list()
foriinrange(start,end+1):
flag=True
forjinrange(2,i):
ifi%j==0:
flag=False
break
ifflag:
l.append(i)
returnl
defgenerate_keys(p,q):
#numbers=(11,13,17,19,23,29,31,37,41,43,47)
numbers=range_prime(10,100)
N=p*q
C=(p-1)*(q-1)
e=0
forninnumbers:
ifn<CandC%n>0:
e=n
break
ife==0:
raiseStandardError("enotfound")
d=0
forninrange(2,C):
if(e*n)%C==1:
d=n
break
ifd==0:
raiseStandardError("dnotfound")
return((N,e),(N,d))
defencrypt(m,key):
C,x=key
return(m**x)%C
decrypt=encrypt
if__name__=='__main__':
pub,pri=generate_keys(47,79)
L=range(20,30)
C=map(lambdax:encrypt(x,pub),L)
D=map(lambdax:decrypt(x,pri),C)
print"keys:",pub,pri
print"message:",L
print"encrypt:",C
print"decrypt:",D
keys:(3713,11)(3713,1631)
message:[20,21,22,23,24,25,26,27,28,29]
encrypt:[406,3622,3168,134,3532,263,1313,2743,2603,1025]
decrypt:[20L,21L,22L,23L,24L,25L,26L,27L,28L,29L]
以上所述是小编给大家介绍的使用python实现rsa算法代码,希望对大家有所帮助!