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