RSA密钥对生成过程具体实践

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/82726233

一 点睛

用具体数字来实践一下RSA的密钥对的生成、加密和解密的过程。不过,用很大的数计算起来会很困难,因此用较小的数来模拟一下。

二 密钥对生成过程

1 求N

准备两个质数p、q,这里选择17和19,它们都是质数。

p=17    (17是质数)

q=19    (19是质数)

下面求N。N=p*q,因此可以进行如下计算。

N=p*q=17*19=323     

2 求L

L是p-1和q-1的最小公倍数。

L=lcm(p-1,q-1)=lcm(16,18)=144

3 求E

E和L的最大公约数必须为1。

gcd(E,L)=1

满足条件的E有很多,例如下面这些数都可以。

5,7,11,13,17,19,23,25,29,31...

这些数称为和L“互质的数”,也就是相对于L是质数的意思。这里选择5作为E。

到此就知道了E=5,N=323,这就是公钥。

4 求D

D必须满足下面条件:

E*D mod L =1

我们来找一找,E乘以几 mod L 等于1呢? D=19可以满足上面的条件,因为:

E*D mod L =5*29 mod 144=145 mod 144 =1

到此,就已经成功生成了密钥对,即:

公钥:(E=5,N=323)

私钥:(D=29,N=323)

公钥(E,N)=(5,323)是可以任意公开的,但是私钥(D,N)=(29,323)必须妥善保存,不能告诉任何人。

5 加密

要加密的明文必须是小于N的数,也就是小于323的数。准确地说,由于解密运算时也需要求mod N,而mod N的结果必定小于N,因此如果明文本身大于N,则解密后无法得到正确的明文。

这里假设要加密的明文是123,加密时使用的是公钥E=5,N=323。

明文的E次方 mod N = 123*123*123*123*123 mod 323=225

因此密文就是225。

6 解密

下面对密文225进行解密。解密时使用的私钥D=29,N=323

密文的D次方 mod N = 225的29次方 mod 323 =123

三 225的29次方 mod 323 的计算过程

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/82726233