现在看到的书很少有RSA的具体计算展示,给同事们说不对称加密算法的时候,大家总觉得RSA很神秘。我在20年前《刘氏高强度公开加密算法设计原理与装置》中有看到过详细的计算过程,当前还用汇编实现,今天抽时间把它用python重新写一遍。
p=47 # 取一个质数,实际中要取得很大
q=61 # 取另一个质数,实际中要取得很大
r=p*q # =2867 # 要加密的值不超过这个r
f=(p-1)*(q-1) # =2760
s=167 # 随机取一个质数 167 (只要与 2760 互质即可)做为私钥
# 开始找一个m,使得 f*n+1 = s*m 这里找的方法是暴力找,n从1一个个加,发现可以整除s,就得到m了
n=1
while True:
if (f*n+1)%s==0:
m=(f*n+1)//s
break
n=n+1
print(m)
pk_m=m # 找 2760*n+1=167*m,发现当n=74,m=1223成立,就把 1223 做为公钥
c=1819 ** pk_m % r # 明文1819用公钥加密,得2756
h=2756 ** s % r # 密文用私钥解密,得1819(即明文)
print(h)
本文回顾了20年前刘氏加密算法的原理,并用Python实现RSA加密过程,展示了如何找到模数和私钥,演示了公钥加密和私钥解密的实际操作。
801

被折叠的 条评论
为什么被折叠?



