[ACTF新生赛2020]crypto-classic1


Python源码:

# coding=utf-8

# 通过前4个字母,计算出key:
s1 = 'SRLU'
s2 = 'ACTF'
key = ''
for i in range(4):
    key += chr((ord(s1[i])-ord(s2[i]))%26 + ord('A'))
print(key)
l = len(key)
print(l)
# key='SPSP'
# 4

c = 'SRLU{LZPL_S_UASHKXUPD_NXYTFTJT}'
m = []
l_c = len(c)
for i in range(l_c):
    if 'A'<=c[i]<='Z':
        if ord(c[i]) < ord(key[i % l]):
            m.append(chr(ord(c[i]) - ord(key[i % l]) + ord('A') + 26))
        else:
            m.append(chr(ord(c[i]) - ord(key[i % l]) + ord('A')))
    else:
        m.append(c[i])
print(m)

l = len(m)
flag = ''
for i in range(l):
    flag += m[i]
print(flag.lower())

运行结果:

SPSP
4
['A', 'C', 'T', 'F', '{', 'W', 'H', 'A', 'T', '_', 'A', '_', 'C', 'L', 'A', 'S', 'S', 'I', 'C', 'A', 'L', '_', 'V', 'I', 'G', 'E', 'N', 'E', 'R', 'E', '}']
actf{what_a_classical_vigenere}

进程已结束,退出代码为 0

flag{what_a_classical_vigenere}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值