当前位置: 高中信息技术 / 综合题
  • 1. (2023高二上·浙江期中) 用1~26的二进制值对大写英文字母A~Z进行编码,编码如下表所示:

    A

    00001

    B

    00010

    C

    00011

    D

    00100

    E

    00101

    F

    00110

    G

    00111

    H

    01000

    I

    01001

    J

    01010

    K

    01011

    L

    01100

    M

    01101

    N

    01110

    O

    01111

    P

    10000

    Q

    10001

    R

    10010

    S

    10011

    T

    10100

    U

    10101

    V

    10110

    W

    10111

    X

    11000

    Y

    11001

    Z

    11010

        

    小明使用该编码对由大写字母组成的明文字符串进行加密,加密算法如下:

    l依次将明文中每个字符转换为其对应的二进制编码;

    l依次将密钥中每个字符转换为其对应的二进制编码;

    l依次取出密钥的每个二进制位与原文的二进制位进行异或运算(若密钥长度不够,则循环重复使用),得到的结果即为密文编码;

    l二进制位异或运算原则:11=0,00=0,10=1,01=1

    例如,明文:HELLO,密钥:ZHE,则按上述方式进行加密:

    明文字符

    H

    E

    L

    L

    O

    密钥字符

    Z

    H

    E

    Z

    H

    明文编码

    01000

    00101

    01100

    01100

    01111

    密钥编码

    11010

    01000

    00101

    11010

    01000

    密文编码

    10010

    01101

    01001

    10110

    00111

    1. (1) 若原文为“HUI”,密钥为“TZ”,则密文编码为
    2. (2) 实现上述功能的部分 Python程序如下,请在划线处填入合适的代码。

      def ctob(c):            # 将一个字符转换为其对应的5位二进制编码

          n =

          ans = ""

          for i in range(5):

              r =

              n = n // 2

              ans = str(r) + ans

          return ans

      def xor(s1, s2):        # 将二进制数s1和s2进行异或运算

          ans = ""

          for i in range(len(s1)):

              if :

                  ans += "0"

              else:

                  ans += "1"

          return ans

      s = input("请输入明文(大写字母):")

      key = input("请输入密钥(大写字母):")

      ans = ""

      for i in range(len(s)):

          s1 = ctob(s[i])

          k =

          s2 = ctob(key[k])

          b = xor(s1, s2)

          ans = ans + b

      print("密文编码为:", ans)

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