RSA加密算法。RSA加密过程相对DES和MD5要简单很多,但作为现在还在使用的加密算法之一,它还是有需要认真思索的地方哒~
工具/原料
1
c语言
2
RSA加密算法
方法/步骤
1
首先是密钥对的生成: (1)选取两个大素数p和q(目前两个数的长度都接近512bit是安全的) (2)计算乘积n=p*q,Φ(n)=(p-1)(q-1),其中Φ(n)为n的欧拉函数(因为两素数乘积的欧拉函数等于两数分别减一后的乘积) (3)随机选取整数e(1
2
加密过程: 将接收到的明文转换成特定的编码方式。如p=43,q=59,e=13,明文为cybergreatwall,按照英文字母表的顺序a=00,b=01,... ,z=25进行编码后为。 然后将转码后的字符串分块,分组要求:每个分组对应的十进制数小于0。这个要求是什么意思呢?我个人的理解通过举例向大家说明:上文字符串分组如下0224 0104 1706 0019 2200 1111。每一分组的数都小于n(2537),而2537能接受的最大的数为2525(也就是‘zz’的情况),所以是4位1组,即两字符一组。这样一来,m1=0224,m2=0104,... ,m6=1111 现在可以加密了~~加密算法就是这个式子----ci ≡ mi^e (mod n),如第一分组 0224^13 ≡ mod 2537 ≡ 1692=c1 。
注意事项
在RSA算法过程中容易出现天文数字(像上文的0224^13),而这些天文数字会为我们编程的过程造成一定的麻烦,更可恶的是会影响速度!!为了避免这种情况,快速取模指数算法可以很有效地算出c≡m^e mod n的准确结果且避免过程中出现天文数字~~
上一篇:股票入门:估值投资的选股法则