文章目录

  • Mathematics
    • Brainteasers Part 1
      • 1. Successive Powers
      • 2. Adrien's Signs
      • 3. Modular Binomials
      • 4. Broken RSA

Mathematics

Brainteasers Part 1

1. Successive Powers

给了一个数组

x的连续阶乘对p取模的结果

p为三位素数

t=[588, 665, 216, 113, 642, 4, 836, 114, 851, 492, 819, 237]

则有
t 0 ∗ x ≡ t 1 m o d p t 1 ∗ x ≡ t 2 m o d p . . . t 10 ∗ x ≡ t 11 m o d p t_0*x\equiv t_1\mod p\\ t_1*x\equiv t_2\mod p\\ ...\\ t_{10}*x\equiv t_{11}\mod p t0​∗x≡t1​modpt1​∗x≡t2​modp...t10​∗x≡t11​modp

x = t 1 ∗ t 0 − 1 m o d p x = t 2 ∗ t 1 − 1 m o d p . . . x = t 11 ∗ t 10 − 1 m o d p x=t_1*t_0^{-1}\mod p\\ x=t_2*t_1^{-1}\mod p\\ ...\\ x=t_{11}*t_{10}^{-1}\mod p\\ x=t1​∗t0−1​modpx=t2​∗t1−1​modp...x=t11​∗t10−1​modp
p为三位素数,直接爆破即可

t = [588, 665, 216, 113, 642, 4, 836, 114, 851, 492, 819, 237]
pmin = max(t)+1for p in trange(pmin,0x3f3f3f3):try:x = [(t[i]*invert(t[i-1],p))%p for i in range(1,ll)]if len(set(x)) == 1:print(p,x)except:pass

结果p=919,x=209
flag为crypto{p,x}


2. Adrien’s Signs

加密函数

随机量为n,为指数部分

使用离散对数sympy.discrete_log

exec('c='+open("D:\\Downloads\\output_80fc6398d2fd9f272186d0af510323f9.txt").read())
from sympy import discrete_log as dl
from tqdm import *
ff = ''
for i in trange(len(c)):cc = c[i]try:r = dl(p,cc,a)ff += '1'except:r = dl(p,-cc%p,a)ff += '0'
print(ff)
from number import *
print(l2b(int(ff,2)))


3. Modular Binomials


给了N,e1,e2,c1,c2,要求得p,q

Factordb能分解


4. Broken RSA

给了n,e,c
注意到e为16,并且有
m e ≡ c m o d n ( m 8 ) 2 ≡ c m o d n m^e\equiv c\mod n\\ (m^8)^2\equiv c\mod n me≡cmodn(m8)2≡cmodn
题目已经明确的给了提示

If you think you’re doing the right thing but getting garbage, be sure to check all possible solutions.

注意,这个方程会有两个解,两个都要考虑并进行下一步计算。

第一步能得到 m 8 m^8 m8 的值,记为r8,以此类推,有
( m 4 ) 2 ≡ r 8 m o d n ( m 2 ) 2 ≡ r 4 m o d n m 2 ≡ r 2 m o d n (m^4)^2\equiv r8\mod n\\ (m^2)^2\equiv r4\mod n\\ m^2\equiv r2\mod n (m4)2≡r8modn(m2)2≡r4modnm2≡r2modn
由此解出m的值

# Sage
n = 27772857409875257529415990911214211975844307184430241451899407838750503024323367895540981606586709985980003435082116995888017731426634845808624796292507989171497629109450825818587383112280639037484593490692935998202437639626747133650990603333094513531505209954273004473567193235535061942991750932725808679249964667090723480397916715320876867803719301313440005075056481203859010490836599717523664197112053206745235908610484907715210436413015546671034478367679465233737115549451849810421017181842615880836253875862101545582922437858358265964489786463923280312860843031914516061327752183283528015684588796400861331354873
e = 16
ct = 11303174761894431146735697569489134747234975144162172162401674567273034831391936916397234068346115459134602443963604063679379285919302225719050193590179240191429612072131629779948379821039610415099784351073443218911356328815458050694493726951231241096695626477586428880220528001269746547018741237131741255022371957489462380305100634600499204435763201371188769446054925748151987175656677342779043435047048130599123081581036362712208692748034620245590448762406543804069935873123161582756799517226666835316588896306926659321054276507714414876684738121421124177324568084533020088172040422767194971217814466953837590498718from number import *R.<x> = Zmod(n)[]
f = x^2-c
r8 = [i[0] for i in f.roots()]
r4,r2,r = [],[],[]for rr8 in r8:f = x^2 - rr8r4 += [i[0] for i in f.roots()]for rr4 in r4:f = x^2 - rr4r2 += [i[0] for i in f.roots()]for rr2 in r2:f = x^2 - rr2r += [i[0] for i in f.roots()]for m in r:print(l2b(m))

得到

flag是crypto{m0dul4r_squ4r3_r00t}

Cryptohack刷题记录(四) Mathematics部分 Brainteasers Part 1 writeup相关推荐

  1. Cryptohack刷题记录(二) Mathematics部分 Modular Math WriteUp

    文章目录 MATHEMETICS MODULAR MATH 1. Quadratic Residues 2. Legendre Symbol 3. Modular Square Root 4. Chi ...

  2. Cryptohack刷题记录(一) General部分 WP

    cryptohack,很不错的一个密码学习平台. 很适合没有基础的beginner系统进行学习 文章目录 注册平台账号 General Encoding 第一题 第二题 第三题 第四题 第五题 XOR ...

  3. BUU刷题记录(四)

    以下几题的ciscn是我先抽出来做的,因为不久就是ciscn,所以看看之前的题目,先不按顺序 十七.ciscn_2019_n_3 照例checksec一下 开启了nx和canary,relro只开启部 ...

  4. CSP-S集训刷题记录

    $ CSP.S $ 集训刷题记录: $ By~wcwcwch $ 一.字符串专题: 1. [模板]$ manacher $ 算法 模型: 求出字符串 $ S $ 中所有回文串的位置及长度. $ sol ...

  5. $2019$ 暑期刷题记录 $2$(基本算法专题)

    $ 2019 $ 暑期刷题记录 $ 2 $ (基本算法专题) $ by~~wch $ $ BZOJ~1958~Strange~Towers~of~Hanoi $ (动态规划,递推) 题目大意: 求有 ...

  6. Codeforces 刷题记录(已停更)

    Codeforces 每日刷题记录 (已停更) 打'+'是一些有启发意义的题目,部分附上一句话题解,每日更新3题,大部分题目较水. Day ID Problem Tutorial Note 1 1 + ...

  7. BZOJ刷题记录---提高组难度

    BZOJ刷题记录---提高组难度 总目录详见https://blog.csdn.net/mrcrack/article/details/90228694 序号 题号 算法 思想难度 实现难度 总难度 ...

  8. 算法笔记CodeUp第一至第六章刷题记录

    文章目录 <算法笔记>2.2小节--C/C++快速入门->顺序结构 1.例题1-1-1 按要求输出信息(1) 2.例题1-1-2 按要求输出信息(2) 3.例题1-2-1 求两个整数 ...

  9. 蓝桥杯官网刷题记录python

    蓝桥杯官网刷题记录python 由于很多题都会在2020.2021.2022年省赛出现,有的在前面文章里做过的这里就不会再说了 一.空间 小蓝准备用 256MB 的内存空间开一个数组,数组的每个元素都 ...

最新文章

  1. 父子表关联在窗体中的绑定显示和浏览
  2. python画直方图代码-python plotly画柱状图代码实例
  3. numpy中where函数的用法
  4. Vue-CLI@4——html-webpack-plugin默认配置的获取与修改
  5. OpenCV图像剪切的扩展和高级用法:任意裁剪,边界扩充
  6. python奖励多少钱_关于python的问题,好的高奖励!
  7. 关于Jquery EasyUI中的DataGrid服务器端分页随记
  8. 如何通过父类引用“调用”子类所独有的方法
  9. 建模助手 —『 CAD图层管理 』Revit视图干净清爽
  10. ae合成设置快捷键_解决AE提示错误预览需要2个或多个帧才能播放问题
  11. 2022年2月沪牌拍牌出价策略
  12. Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004
  13. 大厂是如何用DevCloud流水线实现自动化部署Web应用的?
  14. C语言变量的存储方式和生存期
  15. 我国有较大的AI大模型应用市场,在应用领域具有优势
  16. influxDB自定义查询时区
  17. 520探讨一下如何给geek男友选礼物?(超实用)
  18. ADB将外置TF储存卡融合本机ROM(内部储存)
  19. ISP算法介绍--------super Good
  20. 隐藏安卓平板状态栏,还你全面屏体验

热门文章

  1. 01.15_学习Java的day24(详解)
  2. Pico neo3在Unity中的交互操作
  3. IP地址子网掩码与数值转换
  4. 《Arduino与LabVIEW开发实战》第1章 Arduino基础
  5. 年终奖,明年年中发~
  6. nginx 配置文件正确性测试
  7. App自动化测试工具Uiautomator2
  8. Uniapp的配置及其微信小程序id的注册
  9. 小程序毕业设计 基于微信共享小程序毕业设计开题报告功能参考
  10. 【Mac】快捷键操作对正在run的程序采用选择性关闭(强制退出应用程序)类似在window的任务管理器