首页 > 其他分享 >2021-工业互联网内部预选-Crypto_crackCipher

2021-工业互联网内部预选-Crypto_crackCipher

时间:2024-08-01 17:42:26浏览次数:14  
标签:... crackCipher 互质 Crypto 2021 print gmpy2 e1 e2

Crypto_crackCipher

考点:RSA、共模攻击、小明文攻击

#题目
n:
31934670515243135376544494777800167818741680889482357476043664101552263846965902709062687560949362947553749723524721435747896957912492147193043671762758273928557874925637788128125234989097054621581308987239271864314404632159582139228882592627148471549398446422733460548334634327481394478107361389915143539547418985910098660767096947132861742818924085617776838873128115919283348588325931648893539577018391628362088644594757514603575697434296673391737253417736818781989856674787549446853432501840734261821542854584122792474217519456831119992972697291491227130606752323868696432108995904433
c1:
30844012039330070258536456143761809358862057797854053892630858440607549827193033460787087324464139605654012890812030144340209360634997046801933769493806658354096950161853154223654732670515647323259883550654904887690895032316338986275991996131184156035865626736143044052392910180192210388125839151242363611250480493837180613620038095895598448681833958215693745432776287627165112688548348416744866588794033023405575776579986490123103992662714442506606093897670878390187671611825093216814851078943446973697872672875998366847057357888052222683069587610459869062116880896250860882626078292958
c2:
29376289618101477573845080776626444563736469597151865167336042485301759536784462783567968526685694047477189187540318949323788697287596715848087482575926380828996111996259334495315493477987062604746359839578403800720962544133144995430614683984221525578746985707910306870258697864507359761731111650008286206169103341385599663639278442098324437911561465817861903840747109977213158732239774315834302674212907532925861990950343686568112047401696595811630295514183756734449163322948609350655620291947803969755100787417081253273154808178944403727535343569940717056601055016711889950898679773833
e1*e2=3087

(1)⾸先根据俩e 俩c 只有⼀个n,想到考点为共模攻击

共模攻击条件为俩e互质,那么分解e,选取互质的两个进⾏解题

import gmpy2
from Crypto.Util.number import *

n:...
c1:...
c2:...
ee = 3087

for e1 in range(1, ee):
    if ee % e1 == 0:
        e2 = ee // e1
        if gmpy2.gcd(e1,e2)==1: # 检查e1 , e2 是否互质,不互质就往下⾛,互质就重新循环。
            _, r, s = gmpy2.gcdext(e1, e2)

            m = pow(c1, r, n) * pow(c2, s, n) % n
            print (long_to_bytes(m))

3组结果均不正确,明显非正确答案

image-20240729104435720

(2)考虑e非互质情况

小明文

若e1,e2不互质,可令e1=kE1,e2=kE2 (E1,E2互质)

分别是以下⼏种情况。

k = 3, E1 = 1, E2 = 343, e1 = 3, e2 = 1029

k = 7, E1 = 1, E2 = 63, e1 = 7, e2 = 441

k = 7, E1 = 7 E2 = 9, e1= 49, e2 = 63

可以发现,e此时非常小,可以通过爆破得到k值

⽤到的公式为m^e=k*n+m

通俗的讲就是,原本共模攻击条件是俩e互质,但是现在不互质了,就相当于原来的k次⽅,需要找到k 开k次⽅还原回去

image-20240801115928277

import gmpy2
from Crypto.Util.number import *

n = ...
c1 = ...
c2 = ...

for e1 in range(1, 3087):
    if 3087 % e1 == 0:
        e2 = 3087 // e1
        if gmpy2.gcd(e1,e2)==1: # 检查e1 , e2 是否互质,不互质就往下⾛,互质就重新循环。
            _, r, s = gmpy2.gcdext(e1, e2)
            # m = pow(c1, r, n) * pow(c2, s, n) % n
            # print (long_to_bytes(m))
            continue  #因为上边分析,互质就是正常共模了,但是此题不是正常共模,互质解出来不对,才考虑不正常共模,也就是不互质的情况
            
        up, s, t = gmpy2.gcdext(e1, e2) # 扩展欧几里得算法
        m = pow(c1, s, n) * pow(c2, t, n) % n
        # else:
        #     print(e1)
        #     print(e2)
		
        #小明文攻击
        for k in range(1000):
            temp = m+k*n
            tempRes = gmpy2.iroot(temp,up) #返回⼀个元组 (x, y),其中 x 为 temp 开 up次⽅的值,y 是判断 x 是否为整数的布尔型变量
            if tempRes[1] == True and b'flag' in long_to_bytes(tempRes[0]):
                print(k)
                print(long_to_bytes(tempRes[0]))

image-20240801141207704

标签:...,crackCipher,互质,Crypto,2021,print,gmpy2,e1,e2
From: https://www.cnblogs.com/qihumuyang/p/18337127

相关文章

  • Java sshtools 生成的 EDDSA 签名与 Python 的 pycryptome 生成的签名不匹配
    我有一个python库,它使用pycryptodomelibrary使用openssh格式的ED25519私钥使用Ed25519算法对数据进行签名。然后需要使用sshtools库和相应的公钥在Java应用程序中验证签名。但是签名验证失败。约束:从文件中读取私钥/公钥很重要。我无法......
  • 2021年我因为Tab Session Manager丢失数据,好像是研究过一次leveldb的查看/解码方式 但
    Default\LocalStorage\leveldb.ldb 2023年下半年我因为chatmindai修改域名,又研究过一次,因为时间关系也没有细究 最近,我想查看一下anki的devtool的LocalStorage,即https://ankiweb.net/shared/info/31746032这个插件产生的C:\Users\xxx\AppData\Local\Anki\QtWebEngine\De......
  • Adobe Acrobat DC 2021版安装教程【超简单、超详细】
    AdobeAcrobatDC是Adobe提供的一款专业PDF解决方案,具有许多强大的功能,可以满足各种文档处理需求。注意事项:①下载与激活过程中一定要关闭杀毒软件         ②提供的所有软件都是永久版的         ③软件仅供学习下载使用,不可用于......
  • 在 Windows 上通过 pip 使用 fastmath(gmp 或 mpir)构建 PyCrypto
    我通过pip在Windows上安装了PyCrypto,但我无法构建Crypto.PublicKey._fastmath,因为找不到GMP。我知道voidspace有一个二进制版本,但我想构建最新版本的PyCrypto在Windows上使用GMP或MPIR构建PyCrypto的_fastmath模块可能很复杂,因为没有针对此配......
  • CF1523E Crypto Lights 题解
    CF1523ECryptoLights题解传送门。题目大意:有\(n\)个台灯,初始时都是暗的,每次随机点亮一个暗台灯,若点亮后存在一个长度为\(k\)的连续段有大于一个台灯被点亮则立刻停止,求期望点亮多少台灯。(就是直接把原题翻译搬过来了)很明显的期望dp,状态定义也很明显,设\(f_i\)表示......
  • PTZ summer 2021 Day 5 D Interval
    记\([l,r]\times[a,b]\)表示区间所有的\((x,y),x\in[l,r],y\in[a,b]\)先考虑离散化,对每一个极小区间\((x,y)\)分别求解,假设有\(n\)给定区间包含它若\(n=1\),那么可以使\([1,i_1]\times[i_1,n]\)加上\(1\)如果\(n=2\),如果按照\(n=1\)的做法会重复计算,那么可......
  • ResT(NeurIPS 2021)论文解读
    paper:ResT:AnEfficientTransformerforVisualRecognitionofficialimplementation:https://github.com/wofmanaf/ResT存在的问题作者指出现有Transformer在视觉识别任务中存在以下几个问题:低级特征提取困难:Transformer直接对原始输入图像的patch进行标记化处理,这使得它......
  • ResNet strikes back(NeurIPS 2021,Meta)论文解读
    paper:ResNetstrikesback:Animprovedtrainingprocedureintimmofficialimplementation:https://github.com/huggingface/pytorch-image-models背景ResNet(残差网络)架构自He等人引入以来,一直在各种科学出版物中占据重要地位,并作为新模型的基准。然而,自2015年ResNet问世......
  • 数据结构实验二——单链表的基本操作(2021级zzu)
    ps:滴~打卡第二天,好困啊~~~~~~数据结构实验二——单链表的基本操作一、实验目的二、实验内容(选其中之一写实验报告)三、问题描述四、数据结构定义五、算法思想及算法设计5.1实验内容(1)5.1.1理论实现和代码实现5.2实验内容(2)5.2.1代码实现六、运行示例七、实验代......
  • NSSCTF-2021年SWPU联合新生赛
    [SWPUCTF2021新生赛]finalrce这道题目考察tee命令和转义符\这题主要是,遇到一种新的符号,"\"—转义符。我理解的作用就是在一些控制字符被过滤的时候,可以用转义符,让控制符失去原本的含义,变为字面量,但是作用不变。目录扫描得到1.txt文件,但是发现里面没有内容,利用tee命令可以......