CTF-RSA共模攻击 和 非共模攻击解密脚本
生活随笔
收集整理的這篇文章主要介紹了
CTF-RSA共模攻击 和 非共模攻击解密脚本
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定兩個不同的n的時候一定要看看n1,n2有沒有最大公約數(素數),如果有,那么該最大公約數就是兩者共同的p給定兩個相同的n的時候,那就要考慮共模攻擊了
共模攻擊
有兩組RSA密碼
提取公鑰信息
from Crypto.PublicKey import RSA import libnum import gmpy2c1=libnum.s2n(open('cipher1.txt','rb').read()) c2=libnum.s2n(open('cipher2.txt','rb').read())pub1=RSA.importKey(open('publickey1.pem').read()) pub2=RSA.importKey(open('publickey2.pem').read())n1 = pub1.n e1 = pub1.e n2 = pub2.n e2 = pub2.eprint(n1) print(n2) print(e1) print(e2)解題腳本
from Crypto.PublicKey import RSA import libnum import gmpy2c1=libnum.s2n(open('cipher1.txt','rb').read()) c2=libnum.s2n(open('cipher2.txt','rb').read())pub1=RSA.importKey(open('publickey1.pem').read()) pub2=RSA.importKey(open('publickey2.pem').read()) n = pub1.n e1= pub1.e e2= pub2.es = gmpy2.gcdext(e1,e2) s1 = s[1] s2 = s[2]if s1<0:s1 = -s1c1 = gmpy2.invert(c1, n) elif s2<0:s2 = -s2c2 = gmpy2.invert(c2, n)m = pow(c1,s1,n)*pow(c2,s2,n) % n flag = libnum.n2s(m) print(flag)得到flag:flag{interesting_rsa}
非共模攻擊
拿到題目,有兩個文件,里面分別有n,e,c
看了一下兩份文件的e相同,n不同
題目的名字是RSA_gcd,自然想到了求 n 1 n_1 n1?, n 2 n_2 n2?的最大公約數
求出的最大公約數若為素數的話,那么它就是p,題目自然就解出來了
總結
以上是生活随笔為你收集整理的CTF-RSA共模攻击 和 非共模攻击解密脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CTF-杂项与密码学之工具使用汇总(三)
- 下一篇: 详细讲解Python中的self;什么是