sign_in_rsa
给了五个friends的公钥,其中N都一样,e1-e5不同,推导有:
1 | flag^(e1*e2*e3*e4*e5) mod N = c |
由于还给了一组N,e,d,所以可以通过ed-1 // N 计算出k,而k+1 通常就是ed-1//phi,那么可以求出phi,最后只需要求出e1-e5的乘积对于phi的逆就可解密。
1 | from Crypto.Util.number import * |
Luukaka
解题分两部分:
1.lucas序列求fake_p,题目给的代码可以求出一个和p的高位相同的fake_p,低64位是随机生成的,那么可以用copper求出真实的p。
1 | #sage脚本,copper求p |
2.已知p,q求Paillier的私钥r,u解密(关于这个算法应该博客有记录)。
1 | #求解Paillier加密 |