某信息仅包含大写字母,字符数不超过n*n(n*n 为密钥矩阵规模,n<0),加密过程如下:
图 a 图 b 根据上述加密算法编写解密程序。程序在启动时读取密钥矩阵存入列表a中,根据程序提示,输入 密文,然后显示明文。运行界面如下图 c所示。 图 c
(1)
输入的密文是“8,1,23,2,17,3,33,4,”,则原文是(密钥矩阵按图 a 中的
密钥矩阵)
(2)
实现上述算法的
Python 程序如下,请在划线处填入合适的代码。
def getmm(x,n):
col = (x-1) % n
row = (x-1) //n
getmm = a[col*n+row]
if row % 2 == 1:
getmm =
return getmm n = 3
#存储密文数据,偶数位存储加密值,奇数位存储该数据在原文中的位置
#生成规模为 n*n 的密钥矩阵存入列表 a 中
mw=[]
a=[]
for i in range(n*n):
a.append(i+1)
p=input("请输入密文:") #2,1,6,2,10,3,12,4,10,5, t=0
k=0
for i in range(len(p)):
c=p[i]
if c!=",":
t=t*10+int(c)
else:
mw.append(t)
t=0 print("原文为:",end="")
yw=[]
for i in range(k//2): #对密文解密,结果存入列表 yw 中
yw.append(mw[2*i]-getmm(mw[2*i+1],n))
s=""
for i in range(k//2):
s=s+ #转换为字母输出
print(s)
答案: 【1】GSJY
【1】a[(n-col-1)*n+row]【2】k=k+1【3】chr((yw[i])+64)chr((yw[i])+ord(“A”)-1)或其他等价答案