文章目录

  • MATHEMETICS
    • MODULAR MATH
      • 1. Quadratic Residues
      • 2. Legendre Symbol
      • 3. Modular Square Root
      • 4. Chisese Remainder Theorem

MATHEMETICS

刚考完信安就忘完了…

MODULAR MATH

1. Quadratic Residues

模平方根

取 p = 29 , a = 11 p=29,a=11 p=29,a=11,有
a 2 = 5 m o d 29 a^2=5\mod29 a2=5mod29
我们定义5在模29下的模平方根为11

We say that an integer x is a Quadratic Residue if there exists an a such that $ a^2=x\mod p$ . If there is no such solution, then the integer is a Quadratic Non-Residue.

题目:

给了 p = 29 , i n t s = [ 14 , 6 , 11 ] p=29,ints=[14,6,11] p=29,ints=[14,6,11],找到三个书中的QR的那一个(QR和QNR叫模平方剩余和模非平方剩余),解出这个数的模平方根,小的一个根即flag

数值比较小,暴力解吧

>>> for t in [14,6,11]:for i in range(1,29):if pow(i,2,29) == t:print(f"{i} ^ 2 = {t} mod 29")8 ^ 2 = 6 mod 29
21 ^ 2 = 6 mod 29

flag就是8


2. Legendre Symbol

勒让德符号

是这么个规律
Q R ∗ Q R = Q R Q R ∗ Q N R = Q N R Q N R ∗ Q N R = Q R QR*QR=QR\\ QR*QNR=QNR\\ QNR*QNR=QR QR∗QR=QRQR∗QNR=QNRQNR∗QNR=QR
勒让德符号:
( a p ) = a p − 1 2 m o d p \left(\frac{a}{p}\right)=a^{\frac{p-1}{2}}\mod p (pa​)=a2p−1​modp
满足:

题目:

给了p和包含10个元素的数组ints

ints中找出模p的一个二次剩余,计算这个数的模平方根,较大的那个数即flag

>>> for i in ints:l = pow(i,p//2,p)if l == p-1:passelse:print(ints.index(i))5
>>> a = ints[5]
>>> pow(a,p//2,p)
1

接下来解方程
x 2 ≡ a m o d p x^2\equiv a\mod p x2≡amodp
注意到p为4k+3型的素数

>>> p%4
3

刚刚计算过勒让德符号 ( a p ) = 1 \left(\frac{a}{p}\right)=1 (pa​)=1

则有
a p − 1 2 ≡ 1 m o d p a^{\frac{p-1}{2}}\equiv1\mod p a2p−1​≡1modp
同余号两边同时乘以a:
a p + 1 2 ≡ a m o d p ( a p + 1 4 ) 2 ≡ a m o d p a^{\frac{p+1}{2}}\equiv a\mod p\\ (a^{\frac{p+1}{4}})^2\equiv a\mod p a2p+1​≡amodp(a4p+1​)2≡amodp
则 ± a p + 1 4 ±a^{\frac{p+1}{4}} ±a4p+1​ 即方程的解

直接计算即可

>>> t = pow(a,p//4+1,p)
>>> pow(t,2,p) == a
True
>>> t
93291799125366706806545638475797430512104976066103610269938025709952247020061090804870186195285998727680200979853848718589126765742550855954805290253592144209552123062161458584575060939481368210688629862036958857604707468372384278049741369153506182660264876115428251983455344219194133033177700490981696141526

t即flag


3. Modular Square Root

Tonelli-Shanks算法是一种计算模平方根的算法

任何非2的素数都是 p ≡ 1 m o d 4 p\equiv1\mod4 p≡1mod4 或者 p ≡ 3 m o d 4 p\equiv3\mod4 p≡3mod4 的形式

上一道题已经使用过了,对于4k+3型的素数,计算模平方根的方式很简单,但对于4k+1型的素数并不能这种方法计算

对于 r 2 ≡ a m o d p r^2\equiv a\mod p r2≡amodp,Tonelli-Shanks算法能够计算r

该算法要计算椭圆曲线的交点,不深入讨论,但Sage已经有内置的方法实现

遂用Sage解方程

不知道他说的那个算法在Sage内是否有具体的函数实现,反正我是硬解出来了

sage: R.<x> = Zmod(p)[]
sage: f = x^2-a
sage: rr = f.roots()
sage: rr
[(28169512554311284614348161812907461395482195258388583125795498809297226147214152907614055638917789190356917578259717792167302913007927989841763977292434488782635964253677743342038748567333074043589267896292373028724763808006697707070301035339291758998923066001985927788808579330075671953036025191791621915640175242425390397212674797332132801882880223506177201168864920484993546017284338829512010922075018689505381642887042980971582058343875078178836965895987271392081926458392283354971823611423820865651283490761548053384731721391637064349021755899877224522161311561209530712702153163501623531290150340903913036821041,  1),
(2362339307683048638327773298580489298932137505520500388338271052053734747862351779647314176817953359071871560041125289919247146074907151612762640868199621186559522068338032600991311882224016021222672243139362180461232646732465848840425458257930887856583379600967761738596782877851318489355679822813155123045705285112099448146426755110160002515592418850432103641815811071548456284263507805589445073657565381850521367969675699760755310784623577076440037747681760302434924932113640061738777601194622244192758024180853916244427254065441962557282572849162772740798989647948645207349737457445440405057156897508368531939120,  1)]
sage: min(rr[0][0],rr[1][0])
2362339307683048638327773298580489298932137505520500388338271052053734747862351779647314176817953359071871560041125289919247146074907151612762640868199621186559522068338032600991311882224016021222672243139362180461232646732465848840425458257930887856583379600967761738596782877851318489355679822813155123045705285112099448146426755110160002515592418850432103641815811071548456284263507805589445073657565381850521367969675699760755310784623577076440037747681760302434924932113640061738777601194622244192758024180853916244427254065441962557282572849162772740798989647948645207349737457445440405057156897508368531939120

解出两个根,较小的一个为flag


4. Chisese Remainder Theorem

中国剩余定理 CRTyyds!!

对于方程组
{ x ≡ a 1 m o d n 1 x ≡ a 2 m o d n 2 . . . x ≡ a n m o d n n \left\{ \begin{array}{l} x\equiv a_1\mod n1\\ x\equiv a_2\mod n2\\ ...\\ x\equiv a_n\mod n_n \end{array} \right. ⎩⎪⎪⎨⎪⎪⎧​x≡a1​modn1x≡a2​modn2...x≡an​modnn​​
有唯一解 x ≡ a m o d N x\equiv a\mod N x≡amodN,其中 N = ∏ n i N=\prod n_i N=∏ni​

题目:

已知
{ x ≡ 2 m o d 5 x ≡ 3 m o d 11 x ≡ 5 m o d 17 \left\{ \begin{array}{l} x\equiv 2\mod 5\\ x\equiv 3\mod 11\\ x\equiv 5\mod 17 \end{array} \right. ⎩⎨⎧​x≡2mod5x≡3mod11x≡5mod17​
找到满足 x ≡ a m o d 935 x\equiv a\mod935 x≡amod935 的整数 a a a

进入sage

首先对 935 935 935 进行分解

sage: factor(935)
5 * 11 * 17

>>> a = (2*11*17*invert(11*17,5) + 3*5*17*invert(5*17,11) + 5*5*11*invert(5*11,17))%n
>>> a
mpz(872)

flag是872

Cryptohack刷题记录(二) Mathematics部分 Modular Math WriteUp相关推荐

  1. Cryptohack刷题记录(四) Mathematics部分 Brainteasers Part 1 writeup

    文章目录 Mathematics Brainteasers Part 1 1. Successive Powers 2. Adrien's Signs 3. Modular Binomials 4. ...

  2. 每日刷题记录 (二十)

    文章目录 第一题: 16. 最接近的三数之和 解题思路: 代码实现: 第二题: 43. 字符串相乘 解题思路: 代码实现: 第三题: 59. 螺旋矩阵 II 解题思路: 代码实现: 第四题: 89. ...

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

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

  4. 每日刷题记录 (二十七)

    文章目录 第一题: 1108. IP 地址无效化 解题思路: 代码实现: 第二题: 1431. 拥有最多糖果的孩子 解题思路: 代码实现: 第三题: 1720. 解码异或后的数组 解题思路: 代码实现 ...

  5. buuctf rsa刷题记录(记几种类型的RSA攻击二)

    前言 最近学习了点儿rsa这里总结以下我的buctf rsa部分刷题记录 dp,dp泄露 场景描述: 假设题目仅给出p,q,dp,dq,c,即不给公钥e 这种参数是为了让解密的时候更快速产生的 dp= ...

  6. 二、lintcode刷题记录--二叉树的路径和

    LintCode刷题记录---二叉树的路径和(效率可能没有那些专业的高,主要是代码结构比较简单) ) 题目地址:http://www.lintcode.com/zh-cn/problem/binary ...

  7. CSP-S集训刷题记录

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

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

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

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

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

最新文章

  1. 用数学方式打开Facebook新Logo,真的和视频号Logo来自同一方程
  2. 李彦宏:人工智能不是零和游戏
  3. Oracle-使用切片删除的方式清理非分区表中的超巨数据
  4. 清原高中2021高考成绩查询,2021年抚顺高考状元是谁分数多少分,历年抚顺高考状元名单...
  5. 自写sonar 插件加载到sonar 服务中的展示信息
  6. java中输出拼json,java poi 解析excel 输出json 并且拼接字符串显示到jsp
  7. iOS开发之国际化(二)
  8. AMD RX580刷BIOS提高ETH算力
  9. 代码整洁之道Clean Code笔记
  10. GFLOPs、GMACs、FMA之间的关系
  11. stm32f103电子钟心得体会_stm32f103时钟树讲解
  12. Messaging短信源码导入AndroidStudio
  13. 关于input自动过滤特殊字符的简单方法
  14. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(3)- Serial ISP模式(blhost)
  15. JIRA常用的企业项目管理和开发软件
  16. 程序员是否可以在家办公——在家办公的利与弊
  17. Excel数据录入快捷操作:
  18. 修复计算机管理员账户密码多少,win10管理员账户密码忘记了图文解决教程
  19. UIButton上同时显示图片和文字的方法
  20. 浅析网站的基本构成和主要类型

热门文章

  1. 有一种文化,叫文化衫
  2. APP - 京东退货上门取件自动变成自己邮寄?
  3. p图软件pⅰc_pic修图软件
  4. 心态崩了,这次我真的要哭了...
  5. 新媒体运营教程:需求管理的避坑指南,主要需求分布在三个阶段!
  6. 丁磊三番五次带货,有道词典笔为何受宠?
  7. TinkPHP内核仿每推推51领啦试客源码_PC源码+WAP端+APP原生代码_自带5套精美模板
  8. 如何将知识内化为能力
  9. Windows提权资料搜集
  10. 拼多多为什么要致力于知识普惠?