RSA的算法涉及三个参数,n、e、d。
其中,n是两个大质数p、q的积,n的二进制表示所占用的位数,就是所谓的密钥长度。
e和d是一对相关的值,e能够任意取,但要求e与(p-1)*(q-1)互质;再选择d,要求(d*e)mod((p-1)*(q-1))=1。
(n,e),(n,d)就是密钥对。其中(n,e)为公钥,(n,d)为私钥。
RSA加解密的算法彻底相同,设A为明文,B为密文,则:A=B^d mod n;B=A^e mod n;(公钥加密体制中,通常用公钥加密,私钥解密)
e和d能够互换使用,即:
A=B^d mod n;B=A^e mod n;算法
代码参考以下:
#coding -*- utf:8 -*-
import math
import random数组
#生成素数数组
def prime_array():
arraya = []
for i in range(2,100): #生成前100中的素数,从2开始由于2是最小的素数
x = prime(i,2) #i为素数时返回True,则将x加入arraya数组中;2为测试值
if x:
arraya.append(i)
return arrayaapp
#判断是否为素数
def prime(n, test_divisor):
if ma