RSA算法应用及证明

最近在搞hadoop,因为它用到了ssh,上网查了查,顺便把ssh所用到的RSA算法看了看,觉得很不错,写下来梳理一下,也算作备忘。


RSA定理

若P和Q是两个相异质数(即都为质数且最大公约数为1),另有正整数e和d,其中d的值与( P - 1 )( Q - 1 )的值互质(即最大公约数为1),并使得( ed ) mod ( P - 1 )( Q - 1 ) = 1。有正整数A,且A < PQ,设C = A^e mod PQ,B = C^d mod PQ则有:A = B。


应用:公钥-私钥机制

公钥为一个整数对(N, e);私钥也是整数对(N, d)。

例:P=101,Q=113,则N=11413,e=3533,d=6597。

满足RSA定理的各个关系:gcd[d, (P-1)*(Q-1)] = gcd(6597, 100*112) = gcd(6597, 11200) = 1;

(ed)mod[(P-1)(Q-1)] = (3533*6597)mod(100*112) = 23307201 mod 11200 = 1;


那么,我们就有了公钥(11413, 3533),和私钥(11413, 6597)。


可以由RSA定理得知:对于任何小于11413的正整数a,都有:(a^3533)mod 11413 = c, (c^6597)mod 11413 = a。

比如:a=9726时,(9726^3533)mod 11413 = 5761 = c;(5791^6597)mod 11413 = 9726 = a。


这样的话,规定邮件接收者拥有公钥(11413, 3533)和私钥(11413, 6597),公钥可以公开给任何人,而私钥由此人保管,不泄漏给任何人。

当发送者要向接收者发送一封邮件,内容是9726时,他向接收者申请,让接收者把他的公钥(11413, 3533)发给发送者,发送者做了运算(9726^3533)mod 11413 = 5761,将内容9726加密成为5761,发送给接收者。

因为只有私钥可以解密这一邮件,而且无法从公钥推导出私钥的内容,所以即使其他人知道公钥是(11413, 3533),电文是5761,仍然无法知道内容是什么。

在接收者收到5761后,做运算(5791^6597)mod 11413 = 9726,即还原出原文内容,达到保密的目的。


下面是RSA定理的证明,出自http://blog.csdn.net/fireseed/archive/2005/03/23/327444.aspx,作者很强大,这里谢谢了。

RSA定理

若P和Q是两个相异质数,另有正整数R和M,其中M的值与( P - 1 )( Q - 1 )的值互质,并使得( RM ) mod ( P - 1 )( Q - 1 ) = 1。有正整数A,且A < PQ,设C = AR mod PQ,B = CM mod PQ则有:A = B


证明:

将C = AR mod PQ代入B = CM mod PQ得:

B = ( ( AR mod PQ )M ) mod PQ

根据积模分解公式,可变形为:

B = ( AR )M mod PQ

B = ARM mod PQ                      (1)

因为有( RM ) mod ( P - 1 )( Q - 1 ) = 1,所以有:

RM = K ( P - 1 )( Q - 1 ) + 1,K为正整数。

代入(1)得:

B = AK ( P - 1 )( Q - 1 ) + 1 mod PQ                 (2)

如果ARM < PQ时,明显有B = A。

如果ARM > PQ,且A不是P的倍数也不是Q的倍数时,(2)可变形为:

B = ( AAK ( P - 1 )( Q - 1 ) ) mod PQ

根据积模分解公式可变形为:

B = ( ( A mod PQ )( AK ( P - 1 )( Q - 1 ) mod PQ ) ) mod PQ                   (3)

根据定理三的逆定理:

AK ( P - 1 )( Q - 1 ) mod PQ = ( AK ( P - 1 ) ( Q - 1 ) mod Q

根据费马小定理可得:

( AK ( P - 1 ) ( Q - 1 ) mod Q = 1,则

AK ( P - 1 )( Q - 1 ) mod PQ = 1

故( 3 )可转化为:

B = ( A mod PQ ) mod PQ

因为A < PQ,所以B = A成立。

在述证明过程中可以总结一点:

P为素数且AP互质时,那么当N为任意自然数时都有AN( P - 1 ) mod P = 1成立,这个定理下面还要用到,我们称之为定理四。 

如果ARM > PQ,且A不是P的倍数而是Q的倍数时,A可表示为A = NQ,N为一小于A的整数。

那么(2)式可变形为:

B = ( NQ )K ( P - 1 )( Q - 1 ) + 1 mod PQ

B = ( NK ( P - 1 )( Q - 1 ) + 1 )( QK ( P - 1 )( Q - 1 ) + 1 ) mod PQ

把Q作为公因子提出来,得:

B = ( ( NNK ( P - 1 )( Q - 1 ) ) ( QK ( P - 1 )( Q - 1 ) mod P ) ) Q

用积模分解公式进行分解,得:

B = ( ( NNK ( P - 1 )( Q - 1 ) mod P )( QK ( P - 1 )( Q - 1 ) mod P ) mod P ) Q

跟据定理四,NK ( P - 1 )( Q - 1 )和QK ( P - 1 )( Q - 1 )的值都为1,所以有:

B = ( ( ( N mod P ) mod P ) mod P ) Q

B = NQ mod PQ mod PQ mod PQ

B = A mod PQ mod PQ mod PQ

因为A < PQ,所以B = A成立

同理,当A是P的倍数而不是Q的倍数时,B = A也成立。

 又因为A小于PQ,而P和Q又都是质数,所以A既是P的倍数又是Q的倍数的情况不存在。

 RSA定理成立。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值