《算法导论》数论知识总结(二)

来源:互联网 发布:图章制作软件 编辑:程序博客网 时间:2024/05/18 21:39
5.元素的幂
欧拉定理,对于任意Z*[n]中的a,有a^phi(n)(mod n) = a^|Z*[n]| (mod n) = 1(单位元),由之前Z*[n]定义处定理可知
费马定理,对于素数p,a^(p-1) (mod p) = 1 因为|Z*[p]| = p - 1,0不在Z*[p]当中
求幂当然是化成平方的平方的形式比较快

6.RSA公钥加密系统
公钥P和私钥S实际上是一对互逆的过程 M = P(S(M)) 或 M = S(P(M)), 而且从P很难推出S,这种互逆不可互推的过程就是数论当中的原理,这两个等式也分别代表了公钥加密的两种场景,前者是强调任何人都可以看信息,但没有私钥,无法冒充那个拿着私钥的人来发信息,后者强调任何人都可以发,但没有私钥,你无法看到发给对应公钥之人的信息。
加密过程:随机选大素数p、q 一般512位。n = pq,可知phi[n] = |Z*[n]| = (p - 1)(q - 1) 这是因为 n^((p - 1)(q -1)) = 1,取最小与phi[n]互质的奇数e,求其对于Z*[phi[n]]的逆元d,其中(e, n)为公钥,(d, n)为私钥 两个过程分别为:
P(M) = (M^e) mod n
S(C) = (C^d) mod n
正确性:P(S(M)) = S(P(M)) = (M^(ed)) mod n = (M^(1 + k(p-1)(q -1))) mod n = M * (M^(p-1))^k(q - 1))
其中M^(p - 1) = 1(费马定理) 所以上面式子结果为M
在实际应用中,一般用一个其他比较快速加密手段加密正文,然后将密钥用RSA加密,可恨高程度的提高效率
原创粉丝点击