解释RSA算法的原理,要用到四个数学概念。 * 互质关系 * 欧拉函数 * 欧拉定理 * 模反元素 然后解释公钥和密钥的生成过程 ----- ======四个数学概念====== =====互质关系===== 如果两个正整数,除了1以外,没有其他公因子,我们就称这两个数是互质关系(coprime)。比如,15和32没有公因子,所以它们是互质关系。这说明,不是质数也可以构成互质关系。 关于互质关系,不难得到以下结论: - 任意两个质数构成互质关系,比如13和61。 - 一个数是质数,另一个数只要不是前者的倍数,两者就构成互质关系,比如3和10。 - 如果两个数之中,较大的那个数是质数,则两者构成互质关系,比如97和57。 - 1和任意一个自然数是都是互质关系,比如1和99。 - p是大于1的整数,则p和p-1构成互质关系,比如57和56。 - p是大于1的奇数,则p和p-2构成互质关系,比如17和15。 =====欧拉函数===== 请思考以下问题:   >任意给定正整数n,请问在小于等于n的正整数之中,有多少个与n构成互质关系?(比如,在1到8之中,有多少个数与8构成互质关系?) 计算这个值的方法就叫做欧拉函数,以φ(n)表示。\\ 在1到8之中,与8形成互质关系的是1、3、5、7,所以 φ(n) = 4。 φ(n) 的计算方法并不复杂,但是为了得到最后那个公式,需要一步步讨论。\\ ====第一种情况==== 如果n=1,则 φ(1) = 1 。因为1与任何数(包括自身)都构成互质关系。\\ ====第二种情况==== 如果n是质数,则 φ(n)=n-1 。因为质数与小于它的每一个数,都构成互质关系。比如5与1、2、3、4都构成互质关系。\\ ====第三种情况==== 如果n是质数的某一个次方,即 n = p^k (p为质数,k为大于等于1的整数),则\\ {{:wiki:rsachart0.png|}}\\ 比如 φ(8) = φ(2^3) =2^3 - 2^2 = 8 -4 = 4。\\ 这是因为只有当一个数不包含质数p,才可能与n互质。而包含质数p的数一共有p^(k-1)个,即1×p、2×p、3×p、...、p^(k-1)×p,把它们去除,剩下的就是与n互质的数。\\ 上面的式子还可以写成下面的形式:\\ {{:wiki:rsachart1.png|}}\\ 可以看出,上面的第二种情况是 k=1 时的特例。\\ ====第四种情况==== 如果n可以分解成两个互质的整数之积,\\   n = p1 × p2\\ 则\\   φ(n) = φ(p1p2) = φ(p1)φ(p2)\\ 即积的欧拉函数等于各个因子的欧拉函数之积。比如,φ(56)=φ(8×7)=φ(8)×φ(7)=4×6=24。\\ 这一条的证明要用到"中国剩余定理",这里就不展开了,只简单说一下思路:如果a与p1互质(a