2009年11月7日 星期六

程式設計-偽波力比奧斯密碼

大家好
因為最近看了密碼的故事第46頁的波利奧比斯密碼
覺得這個東西蠻有趣的
而且應該能用程式將它實做出來
所以我就仿照它的密碼表
做出一個類似波利奧比斯密碼的小程式
下面附上程式的載點(偽波里比奧斯)和JAVA的執行環境:
JRE
偽波里比奧斯
(PS.
1.因為是用JAVA所寫的所以沒有JRE便無法執行
2.上面的載點是在某部學校主機,所以連結隨時可能失效)


首先我先介紹波利比奧斯密碼:
波利比奧斯是古希臘人
他的生平我就不贅述了
大家有興趣可以到Wiki查

左邊的表是密碼的故事第46頁的密碼表
每一個字母都有對應的(X,Y)座標
例如:
" h " 的座標是(3,2)
" h " 字元轉換成密碼就會變成32
" g " 的座標示是(2,2)
" g " 字元轉換成密碼就會變成22
以此類推


然而,假如我要跟對方說”Hello”
用這張密碼表加密後就會變成3251313143


知道波利奧比斯密碼加密以及解密的過程後
就可以用這個原理來寫一個程式
但是波利比奧斯密碼在(4,2)的地方是 " i " 和 " j "
而電腦很難知道(4,2)的位置到底是 " i " 還是 " j "
所以為了方便電腦判斷
我另外做了一張表如下:











因為有多出幾個格子
所以我將逗號、句點、空格、單引號放入格子中


下面介紹程式的執行方式:
這邊以"this teacher is very fun."這段字來說明如何執行這程式
1.程式執行時候的樣子

















2.在左上角的地方輸入要加密的訊息

















3.按下加密按鈕後,會對應字元在密碼表的(X,Y)座標轉換成數字


















4.接著,我們在將這串密碼放在左下的文字框中

















5.按下解密按鈕,密碼就解讀出來了

















這個程式還存在很多缺點:
1.輸入大寫字母,解密出來是小寫的
2.只可以輸入密碼表上的東西(廢話),所以只能加密英文和一些標點符號
3.我想不到了,等大家來發掘…

謝謝收看

1 則留言:

95131124 周耿達 提到...

發現一個小BUG:
當左下角多按入一個enter後(換行),訊息無法被解密...