小張參加學(xué)校舉行的密碼破解攻防比賽,他需要在規(guī)定時(shí)間破解對(duì)手密碼。比賽時(shí),小張發(fā)現(xiàn)對(duì)方密文可能采用愷撤加密,這是一-種簡(jiǎn)單且廣為人知的加密技術(shù),方法是將明文中的所有字母都在字母表上向后(或向前)按照一個(gè)固定數(shù)目進(jìn)行偏移后被替換成密文,非字母保持原狀。例如,當(dāng)偏移量是3的時(shí)候,所有的字母A將被替換成D,B變成E,Z變成C,以此類推。
(1)若僅考慮大寫字母且向后偏移,則最多需要考慮多少種偏移量
25
25
。
小張為了增加破解難度,決定在愷撒加密基礎(chǔ)上,引入密鑰字符串,密鑰字符及對(duì)應(yīng)的偏移量如下表所示,密鑰字符串長(zhǎng)度不夠時(shí),可循環(huán)使用。
密鑰 |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
偏移量 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
密鑰 |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
偏移量 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
例如:若輸入明文為:Hello,輸入密鑰為:ABC,則得到密文為:Hfmlp
(2)若明文:ZhouShan
密鑰為:LOVE
密文為:
KvjyDvvr
KvjyDvvr
引入密鑰后的加密算法的Python程序代碼如下:
(3)在橫線處填寫合適代碼,完善程序。
(4)程序調(diào)試過程中,出現(xiàn)如下錯(cuò)誤提示“NameError:name'result'is not defined“,產(chǎn)生此錯(cuò)誤的原因是
result沒有賦初值
result沒有賦初值
。