第十三届全国大学生信息安全竞赛crypto

第一题看起来很简单,就是我的电脑不够好,跑不出来…(其实是我没钱)

bd

在这里插入图片描述
题目给的e很大,低解密指数攻击得到d再把结果跑出来.

d=1485313191830359055093545745451584299495272920840463008756233
n=86966590627372918010571457840724456774194080910694231109811773050866217415975647358784246153710824794652840306389428729923771431340699346354646708396564203957270393882105042714920060055401541794748437242707186192941546185666953574082803056612193004258064074902605834799171191314001030749992715155125694272289
c=37625098109081701774571613785279343908814425141123915351527903477451570893536663171806089364574293449414561630485312247061686191366669404389142347972565020570877175992098033759403318443705791866939363061966538210758611679849037990315161035649389943256526167843576617469134413191950908582922902210791377220066
import gmpy2
from Crypto.Util import number
print(number.long_to_bytes(gmpy2.powmod(c,d,n)))

#flag{d3752538-90d0-c373-cfef-9247d3e16848}

lfsr

一道基础的lfsr题目,不过要注意是左移,利用矩阵来进行求解即可.

#sage
f = open('output.txt', 'r').read()
print(len(f))
# import Crypto.Until.number
N = 2 ** (101) - 1




def doit():
    for i in range(101):
        
        temp = []
        ans=[[int(x)]  for x in f[i:i+100]]
        for j in range(0, 100):
            ttt=[int(k) for k in f[j:j+i]]
            ttt.reverse()
            
            temp.append([0]*(100-i)+ttt)
        #print(temp)
        #print(len(temp))
        #print(temp[0])
        #print(temp[1])
        A = matrix(Zmod(2), temp)
        
        #print(A)
        #print(A.rank())
        if A.rank() !=100:
            continue
        print(i)
        #print(A.inverse())
        B = matrix(Zmod(2), ans)
        mask = A.inverse() * B
        li = [x[0] for x in mask]
        flag = '0b'
        for x in li:
            flag += str(x)
        print(flag)

化成10进制提交.

总结:

第一次参加比赛,misc做了一题,crypto做了两题. 比赛时间24小时,真的挺累的,还有就是crypto的题太少了,就3个题目,和别的类别比起来很透明… 最后排100多名,能进入分区赛挺开心的,感谢给力的队友!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值