前一阵子一直在考虑如何使用RSA算法,一直找不到门路,虽然从网上下载了一些大数阶乘的程序,但毕竟不能解决所有问题,我的C语言学的并不好,不至于自己把整个库开发出来,了解有个openssl,又不知道怎么用到项目中,只好作罢了。
今天研究Shadowsocks源码时看到一篇博客Cryptography解题报告:Factor the RSA modulus,于是下载gmp库,编译安装,跟安装其它程序没啥区别。
./configure
make
make check
make install
安装完成后下载了例程
编译程序时C++要用到libgmp和libgmpxx,如下:
g++ mycxxprog.cc -lgmpxx -lgmp -o a.out
刚开始完全搞不懂程序说的什么,一方面因为我对RSA破解原理了解甚少,一方面这种程序可读性太TM差了。我通过gmplib.org下载了文档,逐个函数搜索查看,终于理解个差不多,我还发现程序可以支持2~62进制数,简直太神奇了,有空一定好好研究gmp库的源码。
上面都是10进制,下面一个是2进制,一个62进制
此程序没有进行质数判断,有必要写一个程序验证一下结果是否真的是质数。