四面八方
四方门主东方青木看着四面八方涌过来的极客,非常震惊,转头便进入了祖祠中的地下室,发现这丫传自唐朝的密室还设计了英文密码。旁边的石头上(附件中有拓本)刻着密码和密文,大家快帮助门主解出密码(答案为一串通顺语义字符串)
附件:
key1:security
key2:information密文啊这是,骚年加油:zhnjinhoopcfcuktlj
根据题目描述,此题应该是四方密码
首先选择两个英文字作密匙,例如example和keyword。对于每一个密匙,将重复出现的字母去除,即example要转成exampl,然后将每个字母顺序放入矩阵,再将余下的字母顺序放入矩阵,便得出加密矩阵。
将这两个加密矩阵放在右上角和左下角,余下的两个角放a到z顺序的矩阵:
加密的步骤:
两个字母一组地分开讯息:(例如hello world变成he ll ow or ld);
找出第一个字母在左上角矩阵的位置;
同样道理,找第二个字母在右下角矩阵的位置;
找右上角矩阵中,和第一个字母同行,第二个字母同列的字母;
找左下角矩阵中,和第一个字母同列,第二个字母同行的字母;
根据key1:security
将确认秘钥1:securityabdfghklmnopqvwxz
根据key2:information
确认秘钥2:informatbcdeghklpqsuvwxyz
进行四方解密:
解密结果提交后发现不对,根据题目描述答案为一串通顺语义字符串
,所以还要将其转化为一串通顺语义字符串,最终转化为youngandsuccessful
,年轻且成功应该是了。
麻了麻了,找了个解密脚本,竟然有了脚本就不多bb了,直接用脚本:
#coding:utf-8
import collections
import rematrix = 'ABCDEFGHIJKLMNOPRSTUVWXYZ'
pla = 'abcdefghijklmnoprstuvwxyz'
key1 = '[SECURITY]'
key2 = '[INFORMATION]'
key1 = ''.join(collections.OrderedDict.fromkeys(key1))
key2 = ''.join(collections.OrderedDict.fromkeys(key2))matrix1 = re.sub('[\[\]]','',key1) + re.sub(key1,'',matrix)
matrix2 = re.sub('[\[\]]','',key2) + re.sub(key2,'',matrix)matrix_list1 = []
matrix_list2 = []
pla_list = []
for i in range(0,len(matrix1),5):matrix_list1.append(list(matrix1[i:i+5]))
#print matrix_list1for i in range(0,len(matrix2),5):matrix_list2.append(list(matrix2[i:i+5]))
#print matrix_list2for i in range(0,len(pla),5):pla_list.append(list(pla[i:i+5]))
#print pla_list#查询两个密文字母位置
def find_index1(x):for i in range(len(matrix_list1)):for j in range(len(matrix_list1[i])):if matrix_list1[i][j] == x:return i,j
def find_index2(y):for k in range(len(matrix_list2)):for l in range(len(matrix_list2[k])):if matrix_list2[k][l] == y:return k,ldef gen_pla(letter):#两个子母中第一个字母位置first = find_index1(letter[0])#两个子母中第二个字母位置second = find_index2(letter[1])pla = ''pla += pla_list[first[0]][second[1]]pla += pla_list[second[0]][first[1]]return pladef main():cip = 'ZHNJINHOOPCFCUKTLJ'pla = ''for i in range(0,len(cip),2):pla += gen_pla(cip[i:i+2])print(pla)if __name__ == '__main__':main()
得到flag:
flag{youngandsuccessful}