BUUCTF 每日打卡 2021-3-28

引言

开学半个月了,原本定的每日一题计划至今还没有实施(咕咕咕)
新学期首次CTF社团培训,让我们按方向分组每周做题发到博客上
(然而搞crypto的好像只有我一个😂)
想起寒假的cryptohack任务还有一大部分没搞,就突然感觉很无力很挫败
然后决定转战BUUOJ
希望这个系列能一直做下去
也当是写日记了

Rabbit

Rabbit, Tank, Best Match
不好意思,搞错了😂
题目就是一串加密字符:U2FsdGVkX1/+ydnDPowGbjjJXhZxm2MP2AgI
然后搜一下Rabbit加密
解密网站:http://www.jsons.cn/rabbitencrypt/解密网站:http://www.jsons.cn/rabbitencrypt/
当然,解出了题目是不够的
一个关于Rabbit加密的文档:https://www.ietf.org/rfc/rfc4503.txt
Rabbit流密码(Rabbit Stream Cipher)简介:
Rabbit流密码是由Cryptico公司(http://www.cryptico.com)设计的,
Rabbit输入128bit的密钥和64bit的IV初始向量,每次迭代后从513bit内部状态中生成128bit的伪随机序列。最大加密消息长度为 2 64 2^{64} 264 bytes,即16TB,若消息超过该长度,则需要更换密钥对剩下的消息进行处理。
那么,什么是IV初始向量呢?
在密码学的领域里,初始向量(英语:initialization vector,缩写为IV),或译初向量,又称初始变量(starting variable,缩写为SV),是一个固定长度的输入值。一般的使用上会要求它是随机数或拟随机数(pseudorandom)。使用随机数产生的初始向量才能达到语义安全(消息验证码也可能用到初始向量),并让攻击者难以对原文一致且使用同一把密钥生成的密文进行破解。(摘自wiki)

篱笆墙的影子

在这里插入图片描述
老谜语人了
一看题目就知道这是个栅栏密码
密文:felhaagv{ewtehtehfilnakgw}

m = 'felhaagv{ewtehtehfilnakgw}'
c = ''

for i in range(0, len(m), 2):
    c += m[i]
for i in range(1, len(m), 2):
    c += m[i]
print(c)

RSA

题目:在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17
求解出d作为flag提交

RSA加密原理:
选择两个大素数p和q,计算出模数N = p * q
计算φ = (p−1) * (q−1) 即N的欧拉函数,然后选择一个e (1<e<φ),且e和φ互质
取e的模反数为d,计算方法: e * d ≡ 1 (mod φ)
对明文m进行加密:c = pow(m, e, N),得到的c即为密文
对密文c进行解密,m = pow(c, d, N),得到的m即为明文

import gmpy2

p = 473398607161
q = 4511491
e = 17

phi = (p-1) * (q-1)
print('d = ' + str(gmpy2.invert(e, phi)))

结语

炸鱼一时爽,一直炸鱼一直爽(doge)
希望能坚持

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值