数论-快速幂运算
关于矩阵快速幂运算的笔记
rsa-smooth攻击
涉及知识点
光滑数:指能分解成小素数乘积的正整数
B-光滑数:若一个光滑数的最大小质数因子<=B,则称该光滑数为B-光滑数
费马小定理:
p-1光滑
由于p为质数,设a为整数且与p互质,则有
又因为p-1为因子互不相同的B-光滑数,所以
故p的倍数可以求出来,且我们有n=p*q。所以
Pollard’s p-1
由于我们只关注gcd的结果,不需要计算B!的值,我们只需要令B=1,2,3,…,计算出gcd结果即可
12345678910111213from gmpy2 import *a = 2n = 2while True: a = powmod(a, n, N) res = gcd(a-1, N) if res != 1 and res != N: q = N // res d = invert(e, (res-1)*(q-1)) m = powmod(c, d, N) print(m) break n += 1
p+1光滑
Williams’s p + 1
1234567 ...
2024.10.SICTF#Round4-wp
Misc
模型的秘密
使用字典爆破压缩包密码
搜索blend找到与3D文件格式有关的blender
发现题目附件中文件头被更改,修改之后使用blender打开查看flag
派森
根据音译,文件为py文件,修改后缀后发现代码也被音译,还原大致代码
123456from import xorfrom import *flag = "************"int = []for i in range(0,len(),4): int.append(xor(ord(flag[i]),ord(flag[i+2])))
差不多就是将flag每四个分为一组,第一位与第三位进行异或,第二位和第四位异或,密文中含有第三位和第四位。异或即可得到flag的原文。
签到
关注公众号即可
Crypto
SignBase
base64即可
Smooth
根据代码,n首先是小素数的乘积,之后+1,所以p-1是光滑的,使用smooth攻击
exp:
123456789101112131415161718192021from Crypto.Util.number import ...
LitCTF2024
关于litCTF的记录与复现
HZNUCTF2024
HZNUCTF2024的wp