RSA攻击

参加个CTF比赛,发现自己零代码量,什么东西都没有准备,被吊打当然正常,基本的工具常用的代码可以自己提前写好的呀

常用的代码有:

gcd:求两个数的最大公约数

egcd:求满足ax+by=1,当gcd(a,b)=1时,满足式子的x和y

hextoflag:很多题目都是给的字母的ord值:两位两位表示一个字母,转化成chr字符就是flag的

b64:base64解密

b32:base32解密

qp:quickpow,快速幂运算

modinv:求cd=1(mod m),在已知c,m,且gcd(c,m)=1的时候,求得c的逆元d

get_phi_n:求n的欧拉函数(这个是做RSA题专用的分解n,因为n是两个大素数相乘)

attacksamen:RSA公模攻击

原理:

http://www.math1as.com/index.php/archives/360/?utm_source=tuicool&utm_medium=referral

http://bobao.360.cn/learning/detail/3058.html

modequation:求ax=b(mod c)的x,一次同余方程,有解的条件是,b % gcd(a,c)=0


代码如下:

#!/usr/bin/env python
# coding=utf-8

from pwn import *
from gmpy2 import iroot
import hashlib
import base64  
import sys
from Crypto.Util.number import bytes_to_long, long_to_bytes
import gmpy2
sys.setrecursionlimit(10000000)  

def hextonumber(x):
	#1234567890abcdef
	#1234567890ABCDEF
	if x>='0' and x<='9':
		return int(x)
	elif x>='A' and x<='F':
		return ord(x)-55
	else:
		return ord(x)-87

def hextoflag(s):
	#word='666c61677b7769656e65725f61747461636b5f61747461636b5f796f757d'
	#flag{wiener_attack_attack_you}
	flag = ''
	i = 0
	while (i


你可能感兴趣的:(python,Crypto)