浅谈RSA算法原理
一、原理步骤
1.找两个很大的素数(质数)P和Q,比如100位长。
N(公开)
2.找一个和M互素的整数E(私钥),也就是说M和E除了1以外没有公约数。
3.找一个整数D(公钥),使得E×D除以M余1
E × D mod M = 1
二、加密解密
加密方式
对信息X加密,得到密文Y
mod N = Y
解密Y得到明文X(费尔马小定理)
mod N = X
三、原理图示
四、破解方式
有上述图示可知,D是由E和M得来,所以当M泄露,则秘钥会被破解。
M是由随机数P和Q得来,当计算出公钥和私钥后,P,Q,M就不再需要,也不会在任何地方保存。M仅在计算公钥私钥的那个瞬间存在于内存中。
所以如果要得到M,需要首先推导出P和Q,而N是公开的,所以可以对N进行因式分解得到P和Q。
目前找到P和Q只有一个笨办法,就是用计算机把所有可能的数字试一遍。这实际上在拼计算机的速度,这也就是为什么P和Q都需要非常大。
一种加密方法只要保证50年内计算机破解不了,也就算是满意的了。