Skip to content

Caesar Cipher (凱撒密碼)

凱撒密碼

凱撒密碼是一種替換加密技術,明文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後被替換成密文。例如,當偏移量是 3 的時候,所有的字母 A 將被替換成 D , B 變成 E ,以此類推。這個加密方法是以羅馬共和時期凱撒的名字命名的,據稱當年凱撒曾用此方法與其將軍們進行聯繫。

維基百科

加密一個字串

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 可用於解密
while True:
    astr = input('輸入一個明文字串 (q 表示離開): ')
    if astr == 'q':
        break
    akey = int(input('偏移量: '))
    alist = []
    for c in astr:
        alist.append(chr(ord(c) + akey))
    print('密文:', ''.join(alist))
    print()

偏移量換算對照表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
alpha = [chr(i) for i in range(65, 91)]
print(f"|##|{'|'.join(alpha)}|")
print(f"|--|{'-|'*26}")
for k in range(26):
    alist = []
    for i in range(26):
        nidx = (i + k) % 26
        newc = alpha[nidx]
        alist.append(newc)
    print(f"|{k:2}|{'|'.join(alist)}|")