【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 放到結果裡

 

 

留言

這個網誌中的熱門文章

麻將新手必看!不知道聽什麼牌怎麼辦?超多種實戰聽牌範例,教你怎麼判斷胡牌機會

麻將教學懶人包|從規則到牌理的完整觀念整理(附實戰心得)

常見的化痰粉愛克痰(小鳥粉)怎麼吃?|化痰粉成人及小孩的使用劑量|紅色與藍色比較