当前位置: 高中信息技术 / 综合题
  • 1. (2023高二上·宁波期末) 某字符串加密程序,其功能是:输入一个仅由小写英文字母组成的字符串,输出加密后的密文,加密规则如下所述:

    ①将明文字符串分成3个字符一组,对每组字符进行②③处理,剩余不足3个的字符不做处理。

    ②随机产生由26个不重复的小写英文字母组成的密文串,将明文中的每组字符分别替换为密文串中对应的字符,若密文串如表1所示,则明文“abcdefghijkl”替换为“jpgntkwmaery”。

    小写字母

    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

    z

    密文串

    j

    p

    g

    n

    t

    k

    w

    m

    a

    e

    r

    y

    l

    d

    c

    q

    f

    i

    x

    u

    h

    z

    b

    o

    v

    s

    表 1

    ③输入一串数字密钥(由1~9数字组成),密钥中每个数字依次为每组字符向右旋转次数,若密钥长度不足,则重复使用密钥,数字与对应旋转次数见表2。例如,数字密钥为“45”,则将第1组字符向右旋转1次,如“jpg”>“gjp”,将第2组字符向右旋转2次,如“ntk”>“knt”>“tkn”,第3组字符向右旋转1次,第4组字符向右旋转2次,依次类推。

    数字

    1

    2

    3

    4

    5

    6

    7

    8

    9

    旋转次数

    1

    2

    3

    1

    2

    3

    1

    2

    3

    表 2

    ④将每组处理后的字符串顺序连接, 每组之间用“*”作为间隔符号, 再将分组剩余的字符倒序 连接, 得到密文。

    程序运行结果如下:

    1. (1) 若明文为“abc”,随机产生的密文串如图所示,数字密钥为“13”,则密文为
    2. (2) 实现上述功能的Python程序如下,请在划线处填入合适的代码。
      def jmdic():      #随机生成由26 个不重复的小写英文字母组成的密文串
      #返回密文字符串,代码略
      def rotate(array,k):  #旋转
          for i in range(k):
              temp=array[len(array)-1]
              for j in range( ):
                  array[j+1]=array[j]
                  array[0]=temp
      ming=input("请输入明文:")
      mkey=input("请输入一串数字密钥: ")
      n=len(ming);m=len(mkey)
      a=[]
      dic=jmdic()
      print("26 个小写字母对应的密文串:",dic)
      for i in range(n//3):     #对每组字符进行处理
          a.append([])  #append():在列表末尾添加元素
          for j in range(3):
              a[i].append( dic[] )
          keynum=
          k=(keynum-1)%3+1
          rotate(a[i],k)
      ans=""
      for i in range(n//3): #将每组字符进行连接
          for j in range(3):
             
          ans+="*"*(i+1)
      ans=ming[i*3+3:]+ans
      print("密文为: ",ans)
    3. (3) 加框处代码有错,请更正。

微信扫码预览、分享更方便