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无法还原,因为其密文一样。
应用:
RSA算法的主要用于加密领域,有个流行的加密套件gpg,可以选各种加密算法包括RSA。
linux下默认安装 gpg,关于其使用看参阅文章:https://www.ruanyifeng.com/blog/2013/07/gpg.html