RSA加密算法

24 篇文章 54 订阅 ¥79.90 ¥99.00
本文介绍了RSA加密算法,该算法由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出,其安全性基于大整数分解难题。详细阐述了公钥与私钥的生成过程,以及加密和解密的原理,涉及欧拉函数和欧拉定理的应用。
摘要由CSDN通过智能技术生成

一、前言

RSA加密算法由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出,算法名字取自三位的姓氏首字母;其安全性部分依赖于大整数分解的困难。之所以说“部分依赖于”,是因为至今还没证明RSA的安全性完全依赖于大整数分解。

何为大整数分解?公开两个大素数的乘积 n = p ∗ q n = p * q n=pq,分解其两个素因子 p p p q q q,即 n = p ∗ q n = p * q n=pq

二、算法详解

公钥与私钥生成

公钥与私钥生成的流程如下:

  1. 随机选取两个大素数 p p p q q q,计算 n = p ∗ q n = p * q n=pq
  2. 随机选取加密密钥 e e e,使得 e e e ( p − 1 ) ∗ ( q − 1 ) (p-1) * (q-1) (p1)(q1)互素;
  3. 用扩展欧几里得扩展算法计算密钥 e e e ( p − 1 ) ∗ ( q − 1 ) (p-1) * (q-1) (p1)(q1)的逆元 d d d,亦即 d = e − 1   m o d   ( ( p − 1 ) ∗ ( q − 1 ) ) d = e^{-1} \bmod ((p-1) * (q-1)) d=e1mod((p1)(q1))

注意: d d d n n n也是互素。 e e e n n n是公钥, d d d是私钥。

加密与解密

对消息 m m m加密,密文 c = m e   m o d   n c = m^e \bmod n c=memodn。用私钥解密密文,恢复明文 m = c d   m o d   n m = c^d \bmod n m=cdmodn

解密公式证明需要用到欧拉定理。首先引入欧拉函数 ϕ ( n ) \phi(n) ϕ(n),表示与 n n n互素的小于 n n n的正整数数目( n > 1 n > 1 n>1),也称之为模 n n n的余数化简集中元素的数目。如果 n n n是素数,那么 ϕ ( n ) = n − 1 \phi(n) = n-1 ϕ(n)=n1;如果 n = p ∗ q n=p*q n=pq p p p q q q互素,那么 ϕ ( n ) = ( p − 1 ) ∗ ( q − 1 ) \phi(n) = (p-1) * (q-1) ϕ(n)=(p1)(q1)
欧拉定理:如果 g c d ( a , n ) = 1 gcd(a,n) = 1 gcd(a,n)=1,那么 a ϕ ( n )   m o d   n = 1 a^{\phi(n)} \bmod n = 1 aϕ(n)modn=1

解密公式的证明如下:

c d   m o d   n = ( m e ) d   m o d   n = m e ∗ d   m o d   n = m k ( p − 1 ) ( q − 1 ) + 1   m o d   n = m ∗ m k ( p − 1 ) ( q − 1 )   m o d   n = m ∗ m k ∗ ϕ ( n )   m o d   n = m   m o d   n \begin{align} c^d \bmod n & = (m^e)^d \bmod n \\ & = m ^{e*d} \bmod n \\ & = m ^{k(p-1)(q-1)+1} \bmod n \\ & = m * m^{k(p-1)(q-1)} \bmod n \\ & = m * m^{k*\phi(n)} \bmod n \\ & = m \bmod n \\ \end{align} cdmodn=(me)dmodn=medmodn=mk(p1)(q1)+1modn=mmk(p1)(q1)modn=mmkϕ(n)modn=mmodn

三、参考资料

[1] R. Rivest, A . Shamir, and L. Adleman. “A method for obtaining digital signatures and public-key cryptosystems”. Communications of the ACM , vol. 21, no. 2, pp. 120–126, 1978.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浅唱书令

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值