RSA其实很简单

本文介绍了RSA加密算法的基本原理及步骤。通过选取两个大素数p和q,并计算n=pq,选择e使得e与(p-1)(q-1)互素,进而计算d=e^(-1)mod((p-1)(q-1))。n和e作为公钥对外公开,d作为私钥保密。加密过程为c=m^(e)(modn),解密过程为m=c^(d)(modn)。

RSA其实很简单

RSA其实很简单:
1. 选两个大素数p, q
2. 计算n=pq
3. 选取e,使得e与(p-1)(q-1)互素
4. 计算d=e^(-1)mod((p-1)(q-1))
n, e就是RSA的公钥,需要告诉每一个可能像你发送加密信息的人,
d就是私钥,只有你能知道。
但别人要想你发送信息m时,需要使用加密算法将明文m变成秘文c
c=m^(e) (mod n)
你收到秘文c后,使用解密算法变回明文m
m=c^(d) (mod n)

抄一个例子:
取:p=47 q=71
那么:n=pq=3337  (p-1)(q-1)=3220
取:e=79
那么:d=79^(-1) mod 3220 = 1019
加密明文m=688
c=688^(79) (mod 3337) = 1570
解密密文c=1570
m=1570^(1019) (mod 3337) = 688

就这么简单。不过为了足够安全,要求p, q都很大,一般至少要512bit,
这样生成的RSA密钥是1024bit。

可是如果你希望把它做成注册码算法,你肯定要把n, e, d都放到程序里去,
这样和普通的对称密钥算法没有任何区别。

这一段程序是为了选p, q和e的。这几个数字一般都是随机产生,然后
验证是否合法的。


e其实可以固定为65537,对加密效果没有影响

 

正像你看到的,RSA的密钥不是你随便挑的,是要从p, q两个大素数
计算得到的,p, q两个数在计算得到密钥后必须严格保密,最好丢弃。
RSA的安全性是基于大数分解的难度,也就是说从n要逆向得到p, q在目
前是没有什么好方法的,超过了目前计算机所拥有的计算能力。
一旦大数分解这个问题得到解决,RSA也就失去了存在的意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值