Crypto 函数和工具总结(持续学习…)
常用的库
采用Anaconda创建虚拟环境安装,然后设置环境变量或者在Pycharm当中导入。
Anaconda
以管理员权限运行anaconda prompt
(可解决UnsatisfiableError: The following specifications were found to be in conflict 错误,即源未提供对应版本的依赖包,创建对应版本环境即可)
conda create -n python3.9 xxx # 创建虚拟环境,附带安装xxx包,可写多个)
activate python3.9 # 激活并进入环境
conda install xxx # 安装xxx包
deactivate # 退出环境
gmpy2
conda install gmpy2
pycryptodome
实际包名为Crypto ,pycrypto、pycrytodome和crypto是相同的,但是第一个作为第三方库已经停止更新,需要3.7以上的python版本,
pip3 install pycryptodome
libnum
libnum 库是一个关于数学运算函数库,
包含common maths、modular、modular squre roots、primes、factorization、ECC、converting、stuff
文档
pip3 install libnum
包函数基础使用方法
import gmpy2
gmpy2.mpz(n)
n=invert(m,phi)
pow(m,e,n)
gmpy2.is_prime(n)
gmpy2.gcd(a,b)
gmpy2.gcdext(a,b)
gmpy2.iroot(x,n)
import libnum
libnum.n2s(n)
libnum.s2n(s)
libnum.b2s(b)
libnum.s2b(s)
s2b(n2s(n))
libnum.generate_prime(1024)
libnum.factorize(1024)
from Crypto.Util.number import *
bytes_to_long(s)
long_to_bytes(n, blocksize=0)
isPrime(N, false_positive_prob=1e-6, randfunc=None)
常用工具安装
yafu
yafu 用于自动整数因式分解,原理是使用 Fermat 方法与 Pollard rho 方法等
RSA中可以快速分解的情况:1. p、q的取值差异过大;2. 取值相近
下载,https://sourceforge.net/projects/yafu/
.\yafu-x64.exe "factor(N)" // 一般模式
.\yafu-x64.exe "factor(@)" -batchfile N.txt // 待分解因数过长时,将其保存在yafu目录下文件N.txt(文件最后一行换行)中
rsa-wiener-attack
针对维纳攻击利用,当e很大的时候
https://github.com/pablocelayes/rsa-wiener-attack
下载手动导入可用
from RSAwienerHacker import hack_RSA
hack_RSA(e,n)
RsaCtfTool
功能强大,详见文档,包括但不限于维纳攻击、小q等
下载,https://github.com/Ganapati/RsaCtfTool
我是初学者,详细用法请见大佬文章:RsaCtfTool的使用__Hydra的博客-CSDN博客__rsactftool
|