「配枪朱丽叶。」

RootのCTF学习笔记。

WhaleCTF-德军密码(费纳姆密码)

二战时盟军截获德军一段密码,密文为:0000011000000000101010110111001011000101100000111001100100111100111001(密钥:helloworld),你可能会解出一个keyxxxxx的答案,请在y后面加{,结尾加},答案的格式是key{xxxxx},所以答案是?

不难看出是费纳姆密码,趁着练习这道题写了个脚本:

#费纳姆密码解密脚本
cipher = input("请输入密文:")
key = input("请输入密钥:")
miyao = ""
flag1 = ""
final = ""
for i in key:
    miyao += (str(bin(ord(i)))[2:])
for i in range(len(cipher)):
    flag1 += str(int(cipher[i])^int(miyao[i]))
#flag七个一组进行分割
step = 7
b = [flag1[i:i+step] for i in range(0,len(flag1),step)]
flag = []
for i in b:
	flag.append(i)
for i in flag:
    final += chr(int(i,2))
print("flag为:"+final)

运行后得到flag