RSA非对称加密算法的原理

RSA非对称加密算法的原理:

p,q 为两个大素数,令 n=pq ,则 φ(n)=(p1)(q1)

取正整数e,满足条件 (φ(n),e)=1,1<e<φ(n),

则存在整数d为e的逆元,表达式为:

ed1(modφ(n))

即存在整数 k 使得ed=kφ(n)+1

设明文为 a ,密文为c,加密式为 aec(modn) ,解密式为 cda(modn) 根据欧拉定理有:

aφ(p)1(modp)

经由如下变换:
aφ(p)kφ(n)φ(p)1(modp)

akφ(n)+1a(modp)

aeda(modp)

cda(modp)

同理可得:
cda(modq)

因为 p,q 为素数,所以
cda(modn)

至此,RSA算法的原理就明了了,我的疑问在于,选取密钥e的时候,为什么条件是让 (e,φ(n))=1 ,而不是让e和别的数互素?

问题就处在※这一行,为了保证公式能够推导下去,必须满足条件 kxφ(p) 是一个整数,所以 x=n 是绝对不行的。我一开始认为, x 可以随意选取别的整数,而实际上,确实只要x φ(p) 的整数倍就没有问题,但是RSA作为一个算法,在方法上要有一套自己的模板。刚好,无论 p 是多大,φ(n) 总会是 φ(p) 的倍数,而且 φ(n) 很大,同时给予了密钥很大的选择空间。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值