算法原理:
根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥
算法描述:
1、选择两个质数:p=3,q=11
2、质数相乘:N=p*q=3*11=33
3、欧拉函数:T=(p-1)*(q-1)=(3-1)*(11-1)=20
4、选择公钥(E,N):E需满足gcd(E,T)=1且1<E<T
E的可选范围有3,5,7,9、11,13、17、19,此处任选,选择3,公钥为(3,33)
5、计算私钥(D,N):D需满足(D*E)%T=1,即D=(KT+1)/E,K∈N,任取D=7,私钥为(7,33)
设明文为m,密文为c,明文转密文 :, 密文转明文:
只根据T和E(不是p和q)要计算出D是不可能的。
因此,任何人都可对明文进行加密,但只有授权用户(知道D)才可对密文解密
简单应用:
明文‘草’,转化为字母c,a,o,分别取值字母表位置3,1,15,即明文
加密,带入明文转密文公式:;得密文9,1,27
解密,带入密文转明文公式:;得明文3,1,15
再转字母,c,a,o,最后的明文‘草’。