RSA加密过程

RSA算法的介绍

  1. RSA的安全基于大数分解的难度。其公钥和私钥是一对大素数(100到200位十进制数或更大)的函数。从一个公钥和密文恢复出明文的难度,等价于分解两个大素数之积(这是公认的数学难题)。 RSA的公钥、私钥的组成,以及加密、解密的公式可见于下表:

    名称描述
    公钥 KUn: 两个素数p和q的乘积(p和q必须保密)
    e: 与(p-1)(q-1)互质
    私钥 KRd: ( m o d ( p − 1 ) ( q − 1 ) ) e \dfrac{(mod(p-1)(q-1))}{e} e(mod(p1)(q1))
    n : p ∗ q p * q pq
    加密C = m e m o d ( n ) m^e mod(n) memod(n)
    解密m = C d m o d ( n ) C^d mod(n) Cdmod(n)

重要知识点

  1. 小学数学教材对互质数是这样定义的:“公约数只有1的两个数,叫做互质数。”这里所说的“两个数”是指自然数。
      判别方法主要有以下几种(不限于此):
  • (1)两个质数一定是互质数。例如,2与7、13与19。
  • (2)一个质数如果不能整除另一个合数,这两个数为互质数。例如,3与10、5与 26。
  • (3)1不是质数也不是合数,它和任何一个自然数在一起都是互质数。如1和9908。
  • (4)相邻的两个自然数是互质数。如 15与 16。
  • (5)相邻的两个奇数是互质数。如 49与 51。
  • (6)大数是质数的两个数是互质数。如97与88。
  • (7)小数是质数,大数不是小数的倍数的两个数是互质数。如 7和 16。
  • (8)两个数都是合数(二数差又较大),小数所有的质因数,都不是大数的约数,这两个数是互质数。如357与715,357=3×7×17,而3、7和17都不是715的约数,这两个数为互质数。等等。

开始解析RSA算法加密解密过程

  • 1.选择一对 不同的、足够大 的素数p, q
  • 2.计算 n = p q n=pq n=pq
  • 3.计算 f ( n ) = ( p − 1 ) ( q − 1 ) f(n) = (p-1)(q-1) f(n)=(p1)(q1), 同时对p,q严加保密,不让任何人知道。
  • 4.找一个与f(n)互质数e
  • 5.计算d, 是的d= ( m o d ( f ( n ) ) e \dfrac{(mod(f(n))}{e} e(mod(f(n))
注释: d 的计算方式 由于流程图里不能使用(), 所以用F 表示 f(n), 且 1 < e < f ( n ) 1 < e < f(n) 1<e<f(n)
No
Yes
No
循环
Yes
Yes
Yes
No
No
循环
开始
所有除法,都采用向
下取整的方式
e > 10 ?
e 肯定不能为 10
X = F / e
X 向下取整
M 等于 X + 1 与 e 的乘积,再取Mod F
M == 1
d = X + 1
X = 2X
X= F - e
当 d = 1 时 , M = e Mod F
M > X ?
d += M / X 向下取整
M = M % X
M == 1
输出d
M = M + e
d++
结束

模拟计算一次

    1. p=3 , q =11
    1. n=33
    1. f(n)=20
    1. e=13
    1. d=17 | 37 | …
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值