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 |
依次将明文中每个字符转换为其对应的二进制编码;
依次将密钥中每个字符转换为其对应的二进制编码;
依次取出密钥的每个二进制位与原文的二进制位进行异或运算(若密钥长度不够,则循环重复使用),得到的结果即为密文编码;
二进制位异或运算原则:
例如,明文: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 |
(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
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