RSA Notes 3
huangx607087学习RSA的笔记(3)
O-About
为了期末考试,30天的CTF学习都摸了,现在风信子里面的大佬越来越多了,我也变得越来越菜。不过还好,自己的高数过了,寒假没事就可以多搞搞CTF了(哦对,还有英语6级,争取大一下半年过掉)
约定:此博客中如果出现除法,未特殊说明的,均为向下取整的整除!
I-RSA中 的情况
0x01 题目背景&引例
NCTF中有一道RSA题目给出了
为了探讨大数字的一般性结论,我们先从小的数字开始,看一个引例:
在数字极小的时候,我们假设
1 |
|
然后我们可以发现:当我们尝试用枚举法(反正数字小)尝试枚举符合条件的答案时,发现一共有多解(并且解的个数恰好是
0x02 有限域内开根
2o01 Introduction
基础的数学早已告诉我们,
所以,我们就需要求出在有限域内开
发现
至于剩下的
Upd 2021.1.17
用以下sagemath代码求特解更快(
1 |
|
2o77Code
代码还是要上一下的,帮助理解,万一真有人看不懂原理呢?(我相信是不存在的)
使用urandom的原因是因为虽然这道题的数字小,但以后的数字可能会很大,并且
1 |
|
我们以
0x03:求根后两两组合,使用CRT
然后,我们回顾刚才的过程,
然后,我们可以把结果两两组合(组合定律告诉我们一共有
3o01:Sagemath截图
3o02 python代码
1 |
|
观察观察,是不是最后的结果与我们一开始枚举求解的结果一模一样?(为了观察方便,特此对ans数组排了个序)
0x04: 最后微调,得出答案
当我们得到所以就讲了个方法,筛选是很容易的,YS9X!
0x05: 总结一下知识点
1:解方程
2:当(我自己定义的),当(应该说是所有解)可以用上面的python代码直接求出,非齐次有限域指数方程可以利用sagemath求出方程的一个特解(实际上我刚才说的是一种很不规范的说法,只不过是为了类比线代和高数才这样姑且地定义的)。
II- 已知 时求解
0x01
一些过于基础的算式我就不给了,我们可以得到这样的两个式子:
然后我们可以计算
等式经过变形,可以得到
然后两边同时减去
又因为
利用
就可以直接求出答案了,直接上代码,不多说了。
1 |
|