希尔密码
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}