陳新龍
在戰爭中,將領為了預防情報在傳遞過程中被敵軍截獲,往往都對情報做了一些手腳,也就是我們俗稱的“加密”。在密碼學中,愷撒密碼(Caesar cipher)是一種最簡單且最廣為人知的加密技術。它是一種替換加密的技術,明文中的所有字母都在字母表上向后(或向前)按照一個固定數目進行偏移后被替換成密文。例如,當偏移量是3的時候,所有的字母A將被替換成D,B變成E,以此類推。這個加密方法是以羅馬愷撒大帝的名字命名的,當年愷撒曾用此方法與他的將軍們進行聯系。
愷撒密碼的替換方法是通過排列明文和密文字母表,如果仔細觀察,我們能很輕易地找出其中的規律,密文字母表示將明文字母表向左或向右移動一個固定數目的位置。例如,當偏移量是左移3的時候,解密時的密鑰就是3,當然我們也可以設置偏移量:
明文字母表:ABCDEFGHIJKLMNOPQRSTUVWX
YZ;
密文字母表:DEFGHIJKLMNOPQRSTUVWXYZA
BC。
接下來分析一道愷撒密碼編程題:
在Text1中輸入明文:ABCDEFGHIJKLMNOPQRS
TUVWXYZ,根據愷撒密碼的原理當點擊加密后,密文為:EFGHIJKLMNOPQRSTUVWXYZABC。當我們輸入其他非字母字符時,密文還是和明文是一樣的,聰明的你是否已經想出答案了?
首先我們先自行分析思維導圖,看看你的思路和我的思路有什么異同。

解析:首先把明文中的每個字符給提取出來,接著對提取出來的每個字符進行單獨的字符判斷,判斷每個字符的范圍,這里根據密碼變化情況分為三個范圍,根據不同的范圍做出相應的變化。比如A到W字母之間,我們可以把字母向后移動三位,X到Z字母之間,我們可以把字母向前移動23位,而剩下的其他非字母類的字符則不變化,最后組合起來,就變成了新的密文。
在編程中,我們就可以用這種關系來編寫我們的代碼,我們選用Visual Basic程序來編寫,這樣程序界面和系統常見的對話框一致。
難度其實不大,關鍵是理解字符分類的思維。

難度解析:愷撒密碼這道題目的主要難度,在于我們的提取函數MID(X,Y,Z),提取函數的意義就是在于由X的第n個字符讀起,讀取后面的m個字符,這里我們還用到了Chr和Asc兩個函數,Chr是將數字轉換成字母,而Asc是將字母轉換成數字,注意兩個函數的使用差異。