RSA算法小记

学习来源:http://www.cnblogs.com/vamei/p/3480994.html

小记:

一、数学基础:

  欧拉Phi函数:Φ(n)=总数(从1到n-1中与n互质的整数) 

(1)欧拉定理:对互质的正整数 a,n,有a^(Φ(n))-1能被n整除 

    当n是质数p时,Φ(p)=p-1,有特殊情况,即小费马定理:a^(p-1)-1 能被n整除

(2)关于欧拉函数的推论:Φ(mn)=Φ(m)Φ(n)

(3)(ab)|(n)=(a|n)(b|n)

二、RSA算法的加密和解密

1、任选互质的 p、q,求积:n=pq

2、求得 k=Φ(n)=(p-1)(q-1)

3、任选与 k互质的 d

4、取整数 e,使得 ed=kt+1,即 (ed)|k=1

则 公钥: d  n  (e用来算乘方,d用来取余)  密钥:e   n  (d用来求乘方,n用来取余)

注意:n应尽量大,这样不易被破解;n应大于被加密数的最大值,否则不同数被加密后可能一样,这样就无法解密还原了。总之,n应尽量大。

        由此也可知,只能加密小于n的数

例:

以p=2,q=7为例,则n=14,k=6;

取d=5,由ed|k=1即5e|6=1可取e=11;

则 公钥:5,14;          密钥:11,14

数据 2 用公钥 5,14 加密得到 (2^5)|14=4,用 11,14解密得 (4^11)|14=2

注意:n应大于被加密数的最大值,否则不同数被加密后可能一样,这样就无法解密还原了:如 3|14=17|14=3,这样对被加密的3和17无法还原,因为其密文一样。

原文地址:https://www.cnblogs.com/z-sm/p/3488425.html