bugku(小山丘的秘密)

题目

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

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

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

import numpy as np

#定义字母表,这里A=1,z=0

table=['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. 放进去算
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值