使用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算法代码,希望对大家有所帮助!