一、RSA算法
在加解密信息的过程中,使用的加密密钥(公钥)与解密密钥(私钥)不同,即:
- 甲要传密信给乙,乙先根据某种算法得出本次与甲通信的公钥与私钥;
- 乙将公钥传给甲(公钥可以让任何人知道,即使泄露也没有任何关系);
- 甲使用乙给的公钥加密要发送的原文m,将密文c发送给乙;
- 乙使用自己的私钥解密密文c,得到原文m。
这种加密模式被称为“非对称加密算法”。从始至终,私钥一直都在信息接收方乙处,只要乙自己不泄露出去,私钥就没有泄露的可能。
二、质数与互质数
一个大于1的自然数,除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为质数(素数);否则称为合数。
例如,15=3×5,所以15不是质数;13=13×1,以外不能为其它任何两个整数的乘积,所以13是一个质数;1不是质数,也不是合数。
公约数只有1的两个数,叫做互质数。判断或选取互质数的方法/定理有很多,如下所示:
- 任意两个质数一定构成互质数(如3与11、53与61);
- 大数是质数的两个数一定是互质数(如97与88);
- 一个质数如果不能整除另一个合数,这两个数为互质数;即一个数是质数,另一个数只要不是前者的倍数,两者就构成互质关系(如3与10、5与26);
- 1和任何一个自然数在一起都是互质数;
- 相邻的两个自然数是互质数(如15与16);
- 相邻的两个奇数是互质数(如49与51)
在RSA算法中,我们通常使用以上第1条与第2条,即选取两个本身都是质数的数作为互质数,而以上第2条定理对于计算欧拉函数值有着积极作用。
三、模运算
模运算的定义如下:让m去被n整除,用所得的余数作为结果,就叫做模运算。
10 mod 3 = 1
26 mod 6 = 2
28 mod 2 = 0
四、同余
“≡”是数论中表示同余的符号,同余的定义如下:
给定一个正整数m,如果两个整数a和b满足a-b能被m整除,即(a-b) mod m = 0,那么就称整数a与b对模m同余,记作 a≡b(mod m)
,同时可成立a mod m=b
。
同余与模运算是不同的:a≡b(mod m)
仅可推出 b=a mod m
。
五、欧拉函数
欧拉函数本身需要一系列复杂推导,本文仅介绍对认识RSA算法有帮助的部分:任意给定正整数n,计算在小于等于n的正整数之中,有多少个与n构成互质关系?计算这个值的方法就叫做欧拉函数,以φ(n)表示。
例如,在1到8之中,与8形成互质关系的是1、3、5、7,所以φ(n)=4 。
在RSA算法中,需要明白欧拉函数对以下定理成立:
- 如果n可以分解成两个互质的整数之积,即n=p×q,则有:
φ(n)=φ(pq)=φ(p)φ(q)
; - 根据“大数是质数的两个数一定是互质数”可以知道:一个数如果是质数,则小于它的所有正整数与它都是互质数;所以如果一个数p是质数,则有:φ(p)=p-1
所以,如果我们知道一个数n可以分解为两个质数p和q的乘积,则有:
φ(n)=(p-1)(q-1)
六、欧拉定理与模反元素
欧拉函数的用处,在于欧拉定理。“欧拉定理”指的是:如果两个正整数a和n互质,则n的欧拉函数φ(n)可以让下面的等式成立:
aφ(n) ≡ 1(mod n)
也就是说,a的φ(n)次方被n除的余数为1,模反元素的推导过程如下:
即,如果两个正整数a和n互质,那么一定可以找到整数b,使得ab-1被n整除,或者说ab被n除的余数是1 。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。