ecc1
1 | from Crypto.Util.number import * |
16进制转码
1 | c = M^e mod n |
结果:b’977260aae9b5}’
1 | from Crypto.Util.number import * |
16进制转码
1 | c = M^e mod n |
结果:b’977260aae9b5}’
非常简单的签到题。
1 | import libnum |
依旧是附件,据hint用utf-8编码打开(实际上直接用vscode打开就可)
题目直接给出了c iv key的具体值(这里的iv和key是随机生成的密钥)那么直接求解
1 | from Crypto.Cipher import AES |
显然刚用vscode打开时有点懵,不同于其他rsa加密,遂逐渐唤醒之前学过aes的记忆,尝试直接在线解密(因为不会写脚本),最后gpt大法!
读题,依旧是密文m 以及素数qp,但这里qp为相邻的素数,接着告知了d、c,直接开解
1 | import math |
整体过程异常曲折,首先重温rsa的基本加密步骤。附上一篇感觉写的很清楚的文章https://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html#:~:text=第一步,随机
1.怎么将qp表示出来
2.开方处理后怎么确保p-1 or q-1的范围是否跳脱了原本q和p的范围,即能不能确认这个next prime就是p or q,故尝试补上一些数,发现没用,最后结果并不用考虑…
3.k这个取值范围的考虑,一开始ai做出来的脚本大多都是递增,导致跑不出来,然后递减再做就ok了。
这次告诉了N c e的值,依旧是rsa加密,那么从头开始看,定义proc函数,接着取10个任意64位质数作为prime_list,十个质数乘起来作为N,而从这十个选取7个相乘作为n,然后一切照旧。
步骤:1、分解N (yafu真好用)
2、列出n可能的情况进行求解
1 | from itertools import combinations |
1、reduce(lambda x, y: x * y, comb) 使用 Python 的 reduce 函数,对组合 comb 中的所有素数执行连续的乘法运算。
2、reduce(lambda x, y: x * (y - 1), comb, 1) 使用 reduce 函数,对组合 comb 中的每个素数 p进行p-1,即计算欧拉函数。
1、寻找质数分解工具。在网上搜寻了好久,发现没有类似的中文在线网站可以分解这种质数,我甚至猜测是不是可以不用分解,发现不现实,但最后找到了yafu。
2、yafu的正确使用,这里贴上一些用法吧
1、如果数比较小,进入该文件的目录后可以直接使用:
yafu-x64 factor(23333333333333)
如果是powershell,则使用:
.\yafu-x64 factor(23333333333333)
2、如果数比较大,那就需要将数保存成一个txt,然后使用,powershell则是在前面加.\:
yafu-x64 “factor(@)” -batchfile n.txt
给出已知数leak r t 以及p q tmp的位数
那么已知tmp的位数很小,所以枚举非常好算。
tmp属于(2^14 2^15)这个范围;
又已知leak = pr - qt -tmp(leak为负数),
代换一下-leak-tmp = c1 =qt-pr(直接看做c1为常数);
接下来就是怎么解方程:
我们不妨设t1使得 t * t1 % r = 1,
上式两边同乘t1 再同取余r ,
便得到了q的表达式.
给出具体代码:
1 | from Crypto.Util.number import long_to_bytes, inverse |
1、经过搜索其实是找到了相关的例题,贴下链接
https://blog.csdn.net/figfig55/article/details/128496397#:~:text=大概逻辑就是
但很明显,不能直接用,该题存在temp这一值,所以从头分析,就有了开头的代换,将未知转已知。
2、接着是两个if条件判断,但一开始我并未意识到这个leak这么小,所以我在设置c1>0后跑不出来flag,而程序检查也没有错误,最后发现要再颠倒一次,于是开头的c1略显诡异。
此次记录目的为记录第一次通过终端完成 git 仓库的拉取、推送等操作,以及一些可能常出现的错误
安装好 git 后可通过 git bash 打开,也可直接通过 shell 进行操作
1 | git config --global user.name "name" |
1 | # 配置 |
1 | # 创建仓库 |
1 | git add . |
1 | git commit -m "first" |
1 | git remote add origin "地址" |
1 | ssh-keygen -t rsa -C "邮箱名" |
1 | # 检查 |
successfully
就成功1 | git push -u origin master |
1 | git pull origin master |
拉取别人仓库文件到本地时,会出现 origin 已配置,原因是一个远程仓库已经被命名为 origin ,不能再次指向另一个仓库
1 | # 删除已有的仓库 |
1 | # 换名字 |
git push 推送问题
1 | git pull origin master |
此操作可能出现
refusing to merge unrelated histories
1 | # 添加后缀 |
而后提交当前变化,即再 add 和 commit 一次
最后 merge 后即可提交
也可以 git push -f 强推,不建议
return error 403
此问题出现于 git push 不加参数默认推送到主分支时,原因是需要令牌(鉴权失败也同理)
记得复制令牌后保存到别处,否则会刷新掉