希尔密码 ctf

希尔密码

1. 原理
希尔加密算法的基本思想是,将d个明文字母通过线性变换将它们转换为d个密文字母。解密只要作一次逆变换就可以了,密钥就是变换矩阵本身。

加密 mK=c 解密 cK^(-1)=m

2. 例题
①加密
在这里插入图片描述
②解密
在这里插入图片描述

3. 脚本

import numpy
c = 'xcezmgmy'
k = numpy.matrix([[1,2],[0,1]])
kn = numpy.linalg.inv(k)
num_c = []
temp =[]
cnt = 1
for i in c:
    temp.append(ord(i)-ord('a'))
    if cnt % 2 ==0 :
        num_c.append(temp)
        temp =[]
    cnt += 1

matrix_c = [numpy.matrix(i) for i in num_c]

matrix_m = [i*kn%26 for i in matrix_c]
#print(matrix_m)
list_m = []
for i in matrix_m:
    temp = i.tolist()
    for j in temp:
        list_m.append(j)
#print(list_m)
flag = ''
for i in list_m:
    for j in i:
        flag += chr(int(j)+ord('a'))
print(flag)

4. 答案
flag{xiermima}

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值