cornsea

简单实现rsa加密算法

rsa的基本步骤如下:

# 1. 产生两个比较大的素数p,q
# 2. 计算 N = pq 和phi = (p-1) * (q - 1)
# 3. 找到一个整数e满足条件 (1 < e < phi)并且与phi是互质的: gcd(e, phi) = 1
# 4. 计算私钥 d, 满足条件1 < d <phi, 并且是e的模逆ed = 1 (mod phi)
# 5. 公共密钥就是(N, e),私钥就是(N, d)

# naive rsa implementation
# p  = 11 , q = 3
#
import math
import random
p = 11
q = 3
N = p * q
e = 3 # prime to ( p - 1)* (q - 1)

# public key: ( N, e ) = (33, 3)
# private key: d = 7
d = 7

# encrypt
#---------------

# message
m = 32

result = 1
exp = e
base = m
while (exp > 0):
    if ( exp & 1):
        result = result * base % N
    exp = exp >> 1
    base = (base * base) % N
c = result
print 'ciphertext:'
print c

# decrypt
#------------------
result = 1
exp = d
base = c
while (exp > 0):
    if ( exp & 1):
        result = result * base % N
    exp = exp >> 1
    base = (base * base) % N
dm = result
print 'decypher text:'
print dm

posted on 2010-06-21 21:09  cornsea  阅读(557)  评论(0编辑  收藏  举报

导航