以为是高性能神仙算法,一看源代码才发现...
以为是高性能神仙算法,一看源代码才发现... 收录于话题 #你不知道的 Python 71个 摄影:产品经理 产品经理亲自下厨 在昨天的文章中,我们讲到了 RSA 算法。RSA 算法的根本原理中,有两个核心质数 p和 q,他们相乘得到一个数 n。由于反向从 n 分解出 p 和 q 非常困难,所以只要 p 和 q 足够大,RSA 算法在现在的计算机水平下就无法被破解。 现在,你先暂停一下,打开百度或者 Google,搜索一下 RSA 算法的教程。随便看10篇。 你会发现,这些教程无一例外都是说:寻找两个足够大的质数 p 和 q。但他们都不会告诉你,怎么寻找。 在现在的数学体系中,质数是找出来的,而不是生成出来的。还没有一个完美的通项公式可以生成质数。我们可以做到快速检查一个数是不是质数,但是我们现在还做不到直接生成一个质数。 那么问题来了,RSA 算法中生成密钥时,需要的这两个质数,到底是怎么来的? 当我们使用 RSA 算法生成2048 bit的密钥时,我们需要找到的两个质数 p 和 q,他们各是1024bit。1024bit的数字有多大?它最小的值为 ,最大为 。如果你从最小的这个数字开始数,数到最大的这个数,每秒你能数1亿个数字