梅森旋转算法(MT19937)
偶遇题目,拼尽全力无法战胜,故来学习 wiki 伪随机数 随机性、熵与随机数生成器:解析伪随机数生成器(PRNG)和真随机数生成器(TRNG)-CSDN博客 【密码学】流密码的基本概念-CSDN博客 MT19937_mt19937predictor-CSDN博客 浅析MT19937伪随机数生成算法-安全KER - 安全资讯平台 你没听过的梅森旋转算法 - CHNmuxii - 博客园 Mersenne Twister 梅森旋转算法笔记 这一篇很详细 相关知识 既然聊到随机数生成了,就会想到PRNG嘛,所以我觉得顺带联系一下流密码会更透彻一点,下面是一些联系知识点,可跳过直接看梅森旋转算法介绍。 流密码 流密码是一种对称密码,一般逐字节或逐比特处理信息(比如说采用异或加密)。现有的流密码是在一次一密的思想基础上发展来的。 一次一密(One-Time...
2024 NewStar-Crypto复现
week1xor题目 12345678910111213from pwn import xorfrom Crypto.Util.number import bytes_to_longkey = b'New_Star_CTF'flag='flag{*******************}'m1 = bytes_to_long(bytes(flag[:13], encoding='utf-8'))m2 = flag[13:]c1 = m1 ^ bytes_to_long(key)c2 = xor(key, m2)print('c1=',c1)print('c2=',c2) 考点:异或,pwn库里的xor()函数 只要了解一下异或运算就可以解决,运算法则为:0 ⊕ 0 = 0,1 ⊕ 0 = 1,0 ⊕ 1 = 1,1 ⊕ 1 = 0(同为 0,异为 1) 一个特点是p、q异或的结果与其中一个再进行一次异或就可以得到另一个 pwntools 中的...
Coopersmith
偶遇题目,拼尽全力无法战胜,故深入学习 参考文章,建议细细研读 https://zhuanlan.zhihu.com/p/4783052681 https://www.math.auckland.ac.nz/~sgal018/crypto-book/ch19.pdf https://doc.sagemath.org/html/en/reference/polynomial_rings/sage/rings/polynomial/polynomial_modn_dense_ntl.html#sage.rings.polynomial.polynomial_modn_dense_ntl.small_roots https://www.ruanx.net/coppersmith/ 定理设N是一个大整数,$ p \geq N^\beta $是 N 的一个因子,设 $ f(x) $ 是一个d阶(次数为d)的多项式,令$ X=\frac{1}{2}N^{\frac{1}{d} - \varepsilon} $,其中$ 0\le\varepsilon\le...
对称密码—流密码
...
椭圆曲线
椭圆曲线下面进行椭圆曲线相关知识的学习(基于crypto hack),中间穿插了一些数论和近世代数的几个知识点。 一. 预备知识学习的时候碰到了数论和近世代数的几个知识点,因为这两门我都没学完(尤其近世代数,完全没开始看),所有只能求尽量讲清楚吧。 群近世代数是主要研究代数系统(即非空集合)的学科,我们会在这个非空集合上定义满足一定条件的一种或多种二元运算(代数运算)。群是近世代数里面一个重要的概念。下面放一个课本上的定义。 简单解释一下就是在一个非空集合里定义一个二元运算,这个运算对于这个集合内的元素都满足 (1)结合率 (2)单位元 (3)逆元 其实还有一个封闭性,就是运算结果还是在这个集合里。 举一个例子,对于所有非零有理数(非空集合),和普通乘法(二元运算)构成了一个群,这个群满足结合律(是显然的),有单位元1(任意数与1做这个二元运算都等于它本身,且交换也满足),且对于任意一个a,都有$ \frac{1}{a} $与a做这个二元运算后等于单位元1(交换也满足) 阿贝尔群(Abel...
格入门
格入门这两周就是学习了一些格的基本知识,因为临近期中考,学的有点仓促,但总算是了解了一点,我把学到知识点也写了写,作业的解题思路会放在后面题目运用那里,可以跳转去看 一. 预备知识要学习格,是得有线性代数的知识才行的。(反正我看到那些矩阵向量什么的就回忆起上学期被线代支配的恐惧)因为我上学期线代学的也不好,忘的也差不多了,加上这里篇幅也有限,我也只能点一下cryptohack上面提到的一些线代知识,目前来看够用,不过强烈建议系统的学习一下线代。 向量和向量空间以二维向量空间举例,我们可以任意取一个点A,连接原点O和A点,这就构成成了一个向量。我们也可以用A点的坐标来表示这个向量,就像这样v=(x,y) 向量满足加减、数乘和点积运算,下面举例说明(加粗表示向量) v=(a , b),w=(c , d) v + w = (a + c,b + d) (减法同理) c * w = (c * a, c * b ) (数乘) v * w = a * c + b * d ...