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}