当前位置: 高中信息技术 / 综合题
  • 1. (2022高二上·上虞期末) 某字符(限ASCII字符)加密算法,对明文中的每个字符加密处理,步骤如下:

    1)将该字符的ASCII码转换成 8 位二进制数(不足8位的,高位补上相应数量的0);

    2)将上述 8 位二进制循环左移 3 次(移出的数位放在最右边);

    3)将上述处理后的 8 位二进制数依次取反(1 变 0,0 变 1);

    4)最后将这 8 位二进制分成左右两个 4 位二进制数,分别转换成十进制数,然后从密钥字符串中取出相应的字符作为密码。密钥见下表:

    值(十进制)

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    加密字符

    W

    g

    Q

    #

    f

    0

    2

    y

    *

    ?

    S

    c

    A

    p

    x

    T

    例如,明文小写字母“a”,通过上述加密算法加密后的密文是“Tf”,加密过程如下:

    “a的ASCII码为97,转换成二进制是01100001”→“逐位取反后为10011110”→“循环左移3次为11110100”→“转换为两个十进制数分别为15,4”→“得到密文Tf”。

    程序运行界面如下图所示:

    实现上述功能的程序如下,请回答下列问题:

    1. (1) 如果输入明文为小写字母“c”,则加密后的密文是
    2. (2) 为实现上述功能,程序如下:

      def miyao(b):     #从密钥中得到相应的密码

        s=0

        my={0:"W",1:"g",2:"Q",3:"#",4:"f",5:"0",6:"2",7:"y",8:"*",9:"?",10:"S",11:"c",12:"A",13:"p",14:"x",15:"T"}

        for i in range(8):

         

          if i==3:

            zh=my[s]

            s=0

        zh=

        return zh

      st=input("输入明文:")

      ans=""

      for i in range(len(st)):

        a=[]

        k=ord(st[i])

        for j in range(8):

          a.append(1)

        while :

          r=1-k%2

          k=k//2

          a[j]=r

          j=j-1

          a=a[3:8]+a[0:3]

          ans=ans+miyao(a)

      print(ans)

      划线处,请填入合适的选项。(单选,填字母)。

      A.s=s*2+b[i]         B.s=s+b[i]*2          C.zh=zh+my[s]      

      D.zh=my[s]+zh        E.k<0                F.k>0

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