1. 某信息仅包含大写字母,字符数不超过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)

【考点】
加密与解密算法;
【答案】

您现在未登录,无法查看试题答案与解析。 登录
综合题 普通
能力提升
换一批
2. 小萌对文本数据进行加密处理,加密算法设计如下:

第一步:换位加密。将明文字符串首尾相接围成一圈,从第一个字符开始计数,计数到m时相应的字符出圈,然后从下一个字符重新计数,直到最后圈中的字符全部出圈。出圈的序列就是该换位加密后的密文。例如明文“abY82?”,密钥m=4,按照上述规则得到的密文为“8baY?2”。

第二步:替代加密。将第一步得到的密文中的大小写字母和数字进行加密,密文字符由正常顺序的字母表或数字表右移m个位置替换得到。例如当m=4时,替换情况如第16题图所示。当m=4时,“8baY?2”经过处理后的密文为“2feC?6”。

(1) 明文字符串“5c-W”经过上述加密方法,密钥m=3处理后的密文字符串为
(2) 小萌根据上述加密策略编写Python程序如下,请在划线处填上合适的代码。

mingwen=input ("请输入明文:")

m=int (input("请输入密钥:"))

q=[’’]*1000

miwen=""

n=len (mingwen)

for i in range(n):

   q[i]=mingwen[i]

head, tail=0, n

i, s=1, 0

while i<=n:

    tmp=q[head]; head+=1

    s+=1

    if :

       miwen+=tmp

       i+=1

       s=0

    else:

     

      tail+=1

ans=""

for i in miwen:

   if i>="A" and i<="Z"

     x=chr((ord(i)-65+m)%26+65)    #大写字母A的ASCII码为65

     elif i>="a" and i<="z":

     x=chr((ord(i)-97+m)%26+97)    #小写字母a的ASCII码为97

     elif i>="0" and i<="9":

                       #数字字符0的ASCII码为48

     else:

        x=i

     ans+=x

print (ans)

综合题 困难