RSA算法演示

本文回顾了20年前刘氏加密算法的原理,并用Python实现RSA加密过程,展示了如何找到模数和私钥,演示了公钥加密和私钥解密的实际操作。

现在看到的书很少有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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值