某明文字符串僅由大、小寫英文字母組成,為實(shí)現(xiàn)加密,小明依次對(duì)該明文中的每個(gè)字符進(jìn)行如下操作:
①將明文中每個(gè)字符轉(zhuǎn)換成其對(duì)應(yīng)的十進(jìn)制ASCII碼值:
②明文的密鑰由0-7這8個(gè)數(shù)字循環(huán)產(chǎn)生,如表所示;
明文 |
P |
r |
o |
g |
r |
a |
m |
m |
i |
n |
g |
…… |
密鑰 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
0 |
1 |
2 |
…… |
③加密過程中,先將每個(gè)明文字符的十進(jìn)制 ASCII 碼值轉(zhuǎn)換成8位二進(jìn)制數(shù),再將每個(gè)字符對(duì)應(yīng)的密鑰轉(zhuǎn)換為4位二進(jìn)制數(shù),最后,將由明文字符的十進(jìn)制ASCII 碼值轉(zhuǎn)換成的8位二進(jìn)制數(shù)中的左邊4位二進(jìn)制數(shù)和右邊4位二進(jìn)制數(shù),分別和由密鑰數(shù)字轉(zhuǎn)換成的4位二進(jìn)制數(shù)逐位進(jìn)行異或運(yùn)算:1⊕1=0,1⊕0=1,0⊕1=1,0⊕0=0。
例如:明文字符串“Programming”中字母“a”用二進(jìn)制表示是01100001,其對(duì)應(yīng)的密鑰
是數(shù)字5,用二進(jìn)制表示是0101,加密后結(jié)果是00110100,如表所示。
明文 |
“a“ |
ASCII |
97 |
二進(jìn)制 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
密鑰 |
5 |
密鑰 |
5 |
5 |
二進(jìn)制 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
密文 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
④將每個(gè)字符的加密結(jié)果按行輸出,如圖所示。請(qǐng)回答下列問題:
(1)輸入字符串“China”,則字符“a”加密后的結(jié)果為
00100101
00100101
。
(2)實(shí)現(xiàn)上述功能的Python代碼段如下,橫線處代碼為
str((ch//2**4%2+m%2)%2)
str((ch//2**4%2+m%2)%2)
。
(3)加框處的代碼有錯(cuò)誤,請(qǐng)修改: