RSA加密算法原理

背景

RSA公开密钥密码体制是一种使用不同的加密密钥与解密密钥,“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。
在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。
正是基于这种理论,1978年出现了著名的RSA算法,它通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。
RSA是被研究得最广泛的公钥算法,从提出到现在已近三十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。1983年麻省理工学院在美国为RSA算法申请了专利。
RSA允许你选择公钥的大小。512位的密钥被视为不安全的;768位的密钥不用担心受到除了国家安全管理(NSA)外的其他事物的危害;1024位的密钥几乎是安全的。RSA在一些主要产品内部都有嵌入,像 Windows、网景 Navigator、 Quicken和 Lotus Notes。

算法原理

RSA公开密钥密码体制的原理是:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

算法描述

  1. 任意选取两个不同的大素数 p p p q q q计算乘积 n = p q n=pq n=pq, φ ( n ) = ( p − 1 ) ( q − 1 ) \varphi(n)=(p-1)(q-1) φ(n)=(p1)(q1);
  2. 任意选取一个大整数 e e e,满足 gcd ⁡ ( e , φ ( n ) ) = 1 \gcd(e,\varphi(n))=1 gcd(e,φ(n))=1,整数 e e e用做加密钥(注意: e e e的选取是很容易的,例如,所有大于 p p p q q q的素数都可用);
  3. 确定的解密钥 d d d,满足 ( d e )   m o d   φ ( n ) = 1 (de)\ mod\ \varphi(n)=1 (de) mod φ(n)=1,即 d e = k φ ( n ) + 1 de=k\varphi(n)+1 de=kφ(n)+1,其中 k k k为正整数;所以,若知道 e e e φ ( n ) \varphi(n) φ(n),则很容易计算出 d d d;
  4. 公开整数 n n n e e e,秘密保存 d d d;
  5. 将明文 m m m m < n m<n m<n m m m是一个整数)加密成密文 c c c,加密算法为

c = E ( m ) = m e   m o d   n c=E(m)=m^e\ mod\ n c=E(m)=me mod n

  1. 将密文c解密为明文m,解密算法为

m = D ( c ) = c d   m o d   n m=D(c)=c^d\ mod\ n m=D(c)=cd mod n

然而只根据n和e(注意:不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值