2021-08-02

[Zer0pts2020]ROR

通过代码可知n为2 的倍数
对n取余二进制最后一位不变
所以可以得到c的最后一位即为m的最后一位

import gmpy2
flag=''
f=open('chall.txt','r').readlines()
li=[]
for i in f:
    li.append(int(i.strip('\n')))
#print(li)
for i in li:
    flag+=bin(i)[-1]
from Crypto.Util import number
print(number.long_to_bytes(eval('0b'+flag[::-1])))

巅峰极客

CRTrsa

我们可以知道
d = dp %p-1
e*dp=1 mod p-1
e*dp-1=k(p-1)
a^(e*dp-1) =1 mod p = 1 mod n
a^(e*dp-1)-1 = kp
gcd(n,_)=p
而dp在(1,1<<20)范围内

import gmpy2
from Crypto.Util.number import *
e = 2953544268002866703872076551930953722572317122777861299293407053391808199220655289235983088986372630141821049118015752017412642148934113723174855236142887
n = 6006128121276172470274143101473619963750725942458450119252491144009018469845917986523007748831362674341219814935241703026024431390531323127620970750816983
c = 4082777468662493175049853412968913980472986215497247773911290709560282223053863513029985115855416847643274608394467813391117463817805000754191093158289399
for i in range(1,1<<20):
    x=pow(2,i*e-1,n)-1
    if(gmpy2.gcd(x,n)!=1):
        p=gmpy2.gcd(x,n)
        break
q=n//p
phi=(p-1)*(q-1)
d=gmpy2.invert(e,phi)
m=pow(c,d,n)
print(long_to_bytes(m))

跑得有……慢

DASCTF 签到

AES题
借个图
在这里插入图片描述
首先使明文0与iv相同
异或得到0
在进行加密 得到密文块0
在输入明文块1
使明文块1与密文0相同异或得到0
在进行相同加密 得到密文1
即密文1=密文0 =明文1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值