非对称加密之RSA公钥加密算法

本文介绍了非对称加密中的RSA公钥加密算法,详细阐述了公钥加密原理,重点讲解了欧拉函数、扩展欧几里得算法,并详细解析了RSA算法的步骤、公式论证及其可靠性。RSA依赖大数因式分解的难度来保证安全性。
摘要由CSDN通过智能技术生成

非对称加密之RSA公钥加密算法

一. 公钥加密原理


Diffie和Hellman在1976年首次公开提出了公钥加密思想,这是有文字记载的几千年以来密码领域第一次真正革命性的进步。公钥算法基于数学函数,而不像对称加密算法那样是基于比特模式的简单操作。更为重要的是公钥加密系统是非对称的,它使用两个单独的密钥,使用两个密钥对于保密性、密钥分发和认证都产生了意义深远的影响。

公钥加密方案由6个部分组成:明文、公钥、加密算法、密文、私钥、解密算法。顾名思义,密钥对中的公钥是公开供其他人使用的,而只有自己知道私钥。通常的公钥加密算法根据一个密钥进行加密,根据密钥对中的另一个密钥进行解密(注意:并非只能使用公钥加密而使用私钥解密,某些非对称加密算法也可以使用私钥加密而使用公钥解密。

对于一个公钥加密算法,必须满足以下要求:

  1. 容易计算生成密钥对;
  2. 已知公钥和明文,使用加密算法计算生成相应的密文对于软硬件是容易实现的;
  3. 已知私钥和密文,使用解密算法计算恢复原始的明文对于软硬件是容易实现的;
  4. 当攻击者已知公钥 PUb P U b 时,不可能通过计算推算出私钥 PRb P R b
  5. 当攻击者已知公钥 PUb P U b 和密文 C C 时,通过计算不可能恢复原始消息 M
  6. 密钥对中任何一个都可用于加密,另一个则用于解密(这一点对于公钥加密算法来说不是必需的)。

二. 欧拉函数和扩展欧几里得算法


RSA加密算法是一种非对称加密算法,在公开密钥加密中被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的,RSA就是他们三人姓氏开头字母拼在一起组成的。从那时起RSA便占据了公钥方案的绝对统治地位,成为最广泛接受和实现的公钥加密方法。

如上节所说,公钥加密算法基于数学函数,RSA也不例外,因此在正式介绍RSA之前,有必要先了解一下这个算法所用到的数据原理基础——欧拉函数和扩展欧几里得算法。

2.1 欧拉函数

互质数:公因数只有1的两个数,称为互质数。判断两数互质有以下法则:

  1. 任意两个质数互质;
  2. 两个不相等的数,较大的那个数是质数,两者互质;
  3. 两个不相等的数,较小的数是质数,较大的数不是较小数的倍数,两者互质;
  4. 1和任意自然数互质;
  5. 2和任意奇数互质;
  6. 如果 p>1 p > 1 ,那么 p p p 1 互质;
  7. 如果 p>1 p > 1 p p 是奇数,那么 p p2 p − 2 互质。

欧拉函数 φ(n) φ ( n ) 求的是满足和 n n 互质且小于等于 n 的整数个数。

欧拉函数有以下法则:

  1. n=1 n = 1 φ(n)=1 φ ( n ) = 1
  2. n n 为质数, φ ( n ) = n 1 ;
  3. n=pm n = p m 其中 p p 为质数时, φ ( n ) = p m p m 1 = p m ( 1 1 / p ) = n ( 1 1 / p )
  4. n=p1p2 n = p 1 ∗ p 2 其中 p1 p 1 p2 p 2 都为质数时, φ(n)=φ(p1)φ(p2) φ ( n ) = φ ( p 1 ) ∗ φ ( p 2 ) ;
  5. 对于任意一个大于1的正整数 n n ,都可以写成质数的乘积: n = p 1 k 1 p 2 k 2 . . . p r k r ,那么 φ(n)=n(11/p1)(11/p2)...(11/pr) φ ( n ) = n ∗ ( 1 − 1 / p 1 ) ∗ ( 1 − 1 / p 2 ) ∗ . . . ∗ ( 1 − 1 / p r )

以上就是欧拉函数的通用计算公式

简要证明一下上述法则3~5:
第3点, n=pm n = p m 时,由互质法则可知,比 p p 大的整数中,只要不是 p 的倍数,都和 p p 互质,因此在 1 p m 中,只要不是 p p 的倍数,就都和 p ,也和 pm p m 互质,因此 φ(pm)=pmpm1 φ ( p m ) = p m − p m − 1

第4点, n=p1p2 n = p 1 ∗ p 2 时,同样由互质法则可知, 1p1p2

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值