准备工具
- python
-
git clone https://github.com/hellman/libnum.git && cd libnum && python setup.py install
- Windows:可从https://pypi.org/project/gmpy2/#files 直接下载已编译的安装包。
- Linux:
sudo apt install python-gmpy2
- gmpy2库
- libnum库:
- yafu
- https://sourceforge.net/projects/yafu/
- RSATool2v17.exe
基础RSA加密脚本
from Crypto.Util.number import *
import gmpy2
msg = 'flag is :testflag'
hex_msg=int(msg.encode("hex"),16)
print(hex_msg)
p=getPrime(100)
q=getPrime(100)
n=p*q
e=0x10001
phi=(p-1)*(q-1)
d=gmpy2.invert(e,phi)
print("d=",hex(d))
c=pow(hex_msg,e,n)
print("e=",hex(e))
print("n=",hex(n))
print("c=",hex(c))
rsa原理部分:
https://xz.aliyun.com/t/2446?utm_source=tuicool&utm_medium=referral
基础RSA解密脚本
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import binascii
import gmpy2
n=0x80b32f2ce68da974f25310a23144977d76732fa78fa29fdcbf
#这边我用yafu分解了n
p=780900790334269659443297956843
q=1034526559407993507734818408829
e=0x10001
c=0x534280240c65bb1104ce3000bc8181363806e7173418d15762
phi=(p-1)*(q-1)
d=gmpy2.invert(e,phi)
m=pow(c,d,n)
print(hex(m))
print(binascii.unhexlify(hex(m)[2:].strip("L")))