学进去-教育应平等而普惠
试题
类型:操作题
难度系数:0.40
所属科目:高中信息技术
用1~26的二进制值对大写英文字母A~Z进行编码,编码如下表所示:
A00001B00010C00011D00100E00101F00110G00111
H01000I01001J01010K01011L01100M01101N01110
O01111P10000Q10001R10010S10011T10100U10101
V10110W10111X11000Y11001Z11010



小明使用该编码对由大写字母组成的明文字符串进行加密,加密算法如下:
依次将明文中每个字符转换为其对应的二进制编码;
依次将密钥中每个字符转换为其对应的二进制编码;
依次取出密钥的每个二进制位与原文的二进制位进行异或运算(若密钥长度不够,则循环重复使用),得到的结果即为密文编码;
二进制位异或运算原则:
例如,明文:HELLO,密钥:ZHE,则按上述方式进行加密:
明文字符HELLO
密钥字符ZHEZH
明文编码0100000101011000110001111
密钥编码1101001000001011101001000
密文编码1001001101010011011000111
(1)若原文为“HUI”,密钥为“TZ”,则密文编码为____
(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)
编辑解析赚收入
收藏
|
有奖纠错

同类型试题

优质答疑

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

用户名称
2019-09-19

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

用户名称
2019-09-19
我要答疑
编写解析
解析:

奖学金将在审核通过后自动发放到帐

提交
我要答疑
我要答疑:
提交