RSA加密算法三:使用python实现简单RSA加解密过程

根据RSA加解密原理,不难写出RSA加密算法

虽然python中可以直接导入RSA库用于RSA应用、证书生成,这里只是单纯的从加解密算法本身实现

只用到了一个random库,为了演示和计算方便,选取的q和p的值限制在二位数100之内

并且应该使用扩展欧几里得算法得到d的值也是用简单的枚举

#author : AtomKid
#version : 1.0
import random

def is_prime(n):
    if n == 2:
        return True
    for i in range(2, n/2+1):
        if n%i == 0:
            return False
    return True

#get prime p and q
def get_pq():
    p, q = 0, 0
    while True:
        p, q = random.randint(10, 100), random.randint(10, 100)
        if is_prime(p) and is_prime(q) and p!=q :
            return p,q

#get e and d
def get_ed(p,q):
    phn = (p-1)*(q-1)
    while True:
        e = random.randint(2, 50)
        if is_prime(e):
            for d in range(2, 1000):
                if e*d % phn == 1:
                    return e,d

p,q = get_pq()
n = p*q
e,d = get_ed(p,q)
print " public key: (n,e) =",(n,e)
print "private key: (n,d) =",(n,d)
m = random.randint(2, 100)
c = m**e%n
print "message m =",m
print "encrypt:\n c =",c
print "decrypt:\n m =",c**d%n

运行测试结果:

 

您可能还喜欢...