RSA

参考文章http://www.freebuf.com/articles/rookie/154183.html

一直以来rsa出现在ctf中概率很大,无论是线上赛还是线下赛

找了很多rsa的博客看的都是一知半解,谁让数学水平差呢。。。。。

大概原理是,明文为M 密文为C 公钥(n/e)私钥(n/d),n是两个大素数的乘积,可以表示为p×q,而e*d=(p-1)(q-1) //反正我是这么理解的,当然细节肯定不是这么简单,原作者做了详细的解释

明文M=C^d mod n

密文C=M^e mod n

解题的时候要用到gmpy2模块,具体的用法解释也没找到。。。。。。

这里有实验吧的题目   http://www.shiyanbar.com/ctf/1828

p, q, e = gmpy2.mpz(473398607161), gmpy2.mpz(4511491), gmpy2.mpz(17)

    phi_n = (p - 1) * (q - 1)

    d = gmpy2.invert(e, phi_n)

    print(d)

gmpy2.mpz()为初始化,gmpy2.invert()我的理解是逆向求d,相当于x=phi_n/e,如果不用这个方法的话对于x是不是只能枚举数字试呢。。。。。

# 计算并输出c^d mod n,也就是求明文m=pow(c, d, n),密文同理

对于求解p和q,大素数分解是困难的,作者解释了yafu工具的用法,原文的云盘分享失效,可以从这里下载

https://sourceforge.net/projects/yafu/

云盘分享(备份)链接: https://pan.baidu.com/s/1a_h38_i7rCMcf62SN6meJA 密码: qjgn


再次感谢淼淼兮与怀大佬

你可能感兴趣的:(RSA)