小學數學比賽 數學急轉彎題目/樂道中學 陳子明老師


  約兩個月前(1月27日),跟大家談到同餘的應用,除了計算日期之外,還可以應用到密碼學(Cryptology)中。在介紹密碼學和同餘的關係之前,先跟同學介紹一下密碼學的基本知識。

  其實運用一套密碼,程序如下:

  密碼學的發展,對於日常生活很有關係,尤其在軍事上。在二次大戰期間,盟軍和德軍希望破解對方的密碼以獲取重要的情報,我們的吳宇森大導演便以這個作題材,創作了電影《烈血追風》(Windtalker,2002)。

  1月27日提到的凱撒加密法(Caesar cipher),是最早期的密碼系統,這密碼方法是有系統地把一組字母換成其他字母。

  舉一個例,如果凱撒大帝設定加密金鑰是+3,即代表把明文的信息固定地移後三個字母,3就稱之為「偏移量」。所以A會變成D,B變成E,X又會變回A;所以如果我想把「SHWHU」解密,就要把每一個字母移前三個,即PETER。當然,同學可能覺得只是單純地把字母移後三個,這組密碼是太簡單。但以當時來說,人們教育水平不高,或可能誤以為密文是別國的語言,所以這套密碼也可以說是安全的。聰明的凱撒大帝也有嘗試不同的方式,後來明文的英文字母都會用00至25數字來表示,例如00代表A,01代表B,25代表Z。

  我們也可以利用同餘的概念來設計金鑰,例如把加密金鑰設定為「被26除時的餘數」,那麼除了00至25之外,還可以用27至99來代表英文字母,換句話說,00、26、52、78能被26整除,所以代表A;01、27、53、79被26相除時餘數為1,所以就代表B(因為27≡53(mod26))。這個方式只看解密時的餘數而不考慮商,更可以利用幾組不同的數字來表示一種字母,令對方更難破解,以表列則如下:

  舉個例,如果我想把MARY寫成密文,可寫成12004350。

  利用上表,試試解下列的密文吧!

  60116699041278973344

  同學們,假設你是凱撒大帝的智囊團,你可否建議一下,如何改良凱撒系統呢?例如把數字改為000至999,或加上乘數加密,又會否更有效把信息隱藏呢?