iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0
Python

30天Python學習之旅系列 第 26

Day 26 : 簡單實作 ( 凱撒加密法 )

  • 分享至 

  • xImage
  •  

今天是我學習 Python 的第 26 天,這次的實作是將撰寫一個簡單的文字加密程式,會運用 Python 的知識技巧有字串處理、迴圈、與 ASCII 值來加密並解密訊息。雖然這樣的加密方式很簡單,但能夠讓我們更好地理解加密原理。

加密原理:

文字加密的一個基本方法是將每個字元的 ASCII 值進行偏移,然後再將其轉換回字元。這樣,即便輸入的訊息是相同的,加密後的結果會顯示不同內容。我們也將加入解密的功能,將加密的文字還原成原始訊息。

步驟:

  1. 定義加密和解密的函式
    首先,先定義兩個函式,encryptdecryptencrypt 會將訊息的每個字元偏移指定的位數,並返回加密後的結果。而 decrypt 則會反向操作,將加密後的訊息還原成原本的訊息。

  2. 輸入訊息與偏移量
    程式會要求使用者輸入要加密的訊息,並設定一個數字作為加密的偏移量 (shift)。這個數字決定了每個字元的 ASCII 值將偏移多少位數。

  3. 加密操作
    在加密的過程中,我們會針對每個字元進行迴圈操作,取得其 ASCII 值,然後加上偏移量,最後再將偏移後的數字轉換回字元。

  4. 解密操作
    解密則是反向操作,將每個字元的 ASCII 值減去偏移量,再轉換回原本的字元,從而還原訊息。

  5. 輸出結果
    加密和解密的結果會在終端上顯示,使用者可以直觀地看到訊息如何從明文轉變成密文,再從密文還原成明文。

以下是完整的程式碼:
https://ithelp.ithome.com.tw/upload/images/20241009/20169078U9dw8VdVfN.png
https://ithelp.ithome.com.tw/upload/images/20241009/20169078xX0d9NeIDh.png
https://ithelp.ithome.com.tw/upload/images/20241009/20169078a5TzqJPZKm.png

實際操作的輸出結果:
請輸入要加密的訊息: Hello, World!
請輸入加密偏移量: 3
加密後的訊息: Khoor, Zruog!
解密後的訊息: Hello, World!

加密後的訊息:
輸入的「Hello, World!」每個字母根據偏移量 3 向後移動。例如:
H 變成 K
e 變成 h
l 變成 o
o 變成 r
W 變成 Z
r 變成 u
其餘符號如逗號、空格等不變。
因此加密後顯示為「Khoor, Zruog!」。


上一篇
Day 25 : 簡單實作 ( 簡易的任務管理器 )
下一篇
Day 27 : 簡單實作 ( 迷宮問題 )
系列文
30天Python學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言