RSA加解密算法简析

RSA加解密算法简析

对于下面的公式,已知m、e、N 求出c容易,但是已知c、N、e反推m就很难了
m e m o d N = c m^e mod N =c memodN=c
这时钥匙就是一个陷门,是某种让加密逆过程很容易的信息,比如我们如果知道了一个d,使得
c d m o d N = m c^d mod N =m cdmodN=m
那么,有
m e ∗ d m o d N = m m^{e*d} mod N =m medmodN=m
这里,e表示加密,d表示解密,这时我们需要一种方法构建e和d,导致其他人很难求出d的值,我们需要用到质因数分解

1.假设随机生成一个超过150位的质数p1,然后生成位数相同的第二个质数p2,将p1与p2相乘,这样就得到了N,N将超过300位,将p1与p2隐藏起来,这时如果其他人想得到p1与p2,用计算机求解会运算几年的时间

2.φ函数φ(n)是小于n的正整数中与n互质的数的数目,φ函数即欧拉函数,对于任意质数P都有φ§=P-1,比如对于质数21377,φ(21377)=21376

3.φ函数性质:
φ ( A ∗ B ) = φ ( A ) ∗ φ ( B ) φ(A*B)=φ(A)*φ(B) φ(AB)=φ(A)φ(B)
那么如果已知N是两质数p1和p2的乘积,那么有
φ ( N ) = φ ( p 1 ) ∗ φ ( p 2 ) = ( p 1 − 1 ) ∗ ( p 2 − 1 ) φ(N)=φ(p1)*φ(p2)=(p1-1)*(p2-1) φ(N)=φ(p1)φ(p2)=(p11)(p21)
比如77=7*11,那么φ(77)=6*10=60

4.欧拉定理

对于互质的m和N,有
m φ ( N ) ≡ 1 ( m o d N ) m^{φ(N)}≡1(mod N) mφ(N)1(modN)
也就是
m φ ( N ) m o d N = 1 m o d N m^{φ(N)}mod N=1 mod N mφ(N)modN=1modN
5 .根据欧拉定理有:
m k ∗ φ ( N ) ≡ 1 k ( m o d N ) m^{k*φ(N)}≡1^k(mod N) mkφ(N)1k(modN)
将恒等式两边同乘m,有
m ∗ m k ∗ φ ( N ) ≡ m ∗ 1 k ( m o d N ) m*m^{k*φ(N)}≡m*1^k(mod N) mmkφ(N)m1k(modN)
也就是
m k ∗ φ ( N ) + 1 ≡ m ( m o d N ) m^{k*φ(N)+1}≡m(mod N) mkφ(N)+1m(modN)
对于我们假设的包含d的公式,当N>m时,有
m e ∗ d ( m o d N ) = m = m ( m o d N ) m^{e*d} (mod N) =m=m(mod N) med(modN)=m=m(modN)
则有
d = ( k ∗ φ ( N ) + 1 ) / e d=(k*φ(N)+1)/e d=(kφ(N)+1)/e
6.加解密具体步骤

  1. Alice随机选择两个互质的数,比如p1=53,p2=59

  2. N=p1*p2=3127

  3. φ(N)=φ(p1)*φ(p2)=52*58=3016

  4. 取一个奇数e,并且该奇数不能同φ(N)有公因数,这里Alice选用了e=3

  5. 计算d=(k*φ(N)+1)/e=(k*3016+1)/3,这里取k=2,得d=2011

  6. 将d与N自己保存好作为私钥,将e于N作为公钥

  7. Bob想给Alice发信息,就要用Alice的公钥进行加密,比如Bob给Alice发的信息转为数字为m,值为89,那么加密后的数据为c
    c = m e m o d N = 8 9 3 m o d 3127 = 1394 c=m^emod N=89^3mod 3127=1394 c=memodN=893mod3127=1394

  8. Bob将加密数据c发给Alice,Alice将d与N拿了出来用来解密
    c d m o d N = 139 4 2011 m o d 3127 = 89 = m c^dmod N=1394^{2011}mod3127=89=m cdmodN=13942011mod3127=89=m
    这样,Alice就拿到了Bob加密过的数据,如果有人想知道d就必须知道φ(N),这就涉及到了N的质因数分解,就像之前说的当N特别大时,用计算机求解也会运算几年的时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值