RSA的加密于解密数学过程描述:
1. 爱丽丝挑选了两个巨大的质数p和q。这两个质数要非常庞大(越大越好),不过,为了方便说明,我们假设爱丽丝所挑选的是p=17,q=11.这两个数字必须保存好,不让任何人知道。
2. 爱丽丝让这两个质数相乘,得到另一个数字N。本例中,N=187。她又再挑选一个数字e,假设e=7.[数字e和数字(p-1)和(q-1)必须互质,也就是说,它们不可以有共同的因数]
3. 爱丽丝把e和N公布在类似电话簿的地方。这两个数字是加密程序的要素,应该让任何想加密信息给爱丽丝的人都拿得到。这两个数字一起,被称为公开密钥。(爱丽丝所选取的e值可以跟其他人的e值一样,跟p和g有关的N值却必须是独一无二的。)
4. 加密信息时,必须先把信息转换成一个数字M。例如,文字被转成ASCII二进制数(bits)时,我们可以把这些二进制数字想成一个十进制数字。根据以下公式,就可以把M加密成密码文C:C=M^e(mod N)
5. 假设鲍勃想送给爱丽丝一个吻:就单单一个字母X。X的ASCII码是1011000B换算成十,进制就是88,。所以,M=88
6. 鲍勃查询爱丽丝的公开钥匙,发现N=187,e7。这两个数字等于提供了他加密信息给爱丽所需的公式。已知M=88,这个公式就变成
C=88^7(mod 187)
7. 用计算机算这个式子反而费事,因为他的显示屏容不下这么大的数字。事实上,模算数的指数有一个计算技巧:88^7(mod 187)=[88^4(mod 187)x88^2(mod 187)x 88(mod 187)](mod 187)
鲍勃就把密码文C=11寄送给爱丽丝。
8. 我们知道模算术里的指数函数是单向函数,要从C=11逆向求出原始信息M是非常困难的事情。所以,伊芙没有方法破解这则信息。
9. 爱丽丝可以解译这则信息,因为她有特别的信息:她知道p和q的值。她会利用下面的公式计算出一个值d,它就是解密钥匙,也就是她的私人钥匙:
e x d=1(mod(p-1)x(q-1))
7 x d=1(mod 16x10)
7 x d=1(mod 160)
d=23 可以用欧几里得演算求出
10. 爱丽丝利用以下公式解译信息:
M=C^d(MOD 187)
M=11^23(MOD 187)
M=[11(MOD 187)X11^2(MOD 187)X11^4(NOD 187)X11^16(MOD 187)](MOD 187)
M=88=X(ASCII) |