【Python實作】簡易解碼器|位移加密法與ASCII 碼的認識
Python實作_簡易解碼器
目的:加強資料型別的觀念、練習字串與整數的轉換、認識ord()及chr()函數
說明:在密碼學中,有一種非常基本的「位移加密法」。做法是:把明文字串中的每一個字元,用它的 ASCII 碼加上一個整數 K,得到加密後的字元(當然地!所有字元都必須維持在 ASCII 可列印範圍內)。例如:K = 2 時,banana 每個字元都往後移兩碼,就會變成 dcpcrc。解密則相反,只要把密碼字串的每個字元,減去同一個 K 就能還原成明文。
#程式開始
code = input("請輸入密文字串:")
k = 2
plain = ""
for c in code:
plain += chr(ord(c) - k)
print("解密結果:",
plain)
#程式結束
程式執行結果:
請輸入密文字串:dcpcpc
解密結果: banana
程式說明
要說明的是該段:
for c in code:
plain += chr(ord(c) - k)
(1) ord(c)
把「字元」變成「ASCII 數字」。
例:
ord("a") → 97
ord("d") → 100
所以假設目前字元是 c:
ord("c") → 99
(2) ord(c) - K
把剛才的 ASCII 碼「減掉 K」→ 用來解密。
如果 K = 2,且 c = 'c':
ord("c") = 99
99 - 2 = 97
97 是 'a' 的 ASCII。
(3) chr(ord(ch) - k)
chr() 會把「ASCII 數字」變回「字元」。
chr(97) → 'a'
(4) plain += ...
把新得到的字元 接在字串 plain 後面。就像是在累積字串,變成最後的解密結果。
全部串起來的邏輯
假設 c = 'c'、K = 2:
ord(c) → 99
99 - 2 → 97
chr(97) → 'a'
plain += "a" → 把 a 放到結果裡
留言
張貼留言