bugku(小山丘的秘密)

题目

小山丘的秘密
在这里插入图片描述

思路

  1. 评论提示希尔 (Hill) 密码,学习一下
    希尔(bill)密码是将密文通过 a-z > 0-25 的格式转换成数字,然后根据加密密钥的一个线性矩阵将对应的密文做一个矩阵乘法和模运算,具体怎么算稍稍没太看懂,影响不大

工具

在某个大佬博客里看见了一段代码,稍稍研究一下,自己使使

import numpy as np#定义字母表,这里A=1,z=0table=['z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y']#定义密钥key_inv=np.matrix(np.array([[1,2,3],[0,1,4],[5,6,0]])).I%26#密文根据字母表翻译成矩阵
result=key_inv*np.array([[16,20,17],[12,7,8],[7,2,13]])%26
str=''
resulttable=[]
for i in range(result.shape[0]):for j in range(result.shape[1]):resulttable.append(round(result.T[i,j]))
for i in range(9):str+=table[resulttable[i]]
print("bugku{"+str+'}')

过程

  1. 棋盘格应该对应加密秘钥,翻译成加密矩阵
    在这里插入图片描述
  2. 根据密码表翻译bugku{PLGTGBQHM}
    PLGTGBQHM >> 16 12 7 20 7 2 17 8 13
{[16,12,7]
[20,7,2]
[17,8,13}
  1. 然后矩阵乘加模运算
bugku{whatahill}

总结

  1. 希尔密码确定字母表序列
  2. 确定秘钥
  3. 放进去算


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部