昨天說到
古典密碼學是一種利用人們天馬行空的想像力所創造出的各種加密方式
很多都不需要大量的運算
而是你看過就會知道的東西
當你想破解古典密碼時
其實就是考驗你的知識廣度
今天就帶大家來看看這些古人的智慧吧~
這個中文就是摩斯電碼
相信各位一定不陌生
在以前戰爭時期
海上遠距離通信通常會用打燈的方式
或是電訊的方式,用耳朵聽
為了清楚的分辨
因次由一長一短的符號構成
短音稱為 滴
長音稱為 搭
每一種字母的組合方式都不同
我到現在還是背不起來 (X
數字可能比較好記
都由五個符號構成
由於摩斯電碼只由兩種符號構成
因此也可衍生出短音為 0
長音為 1
的表示方法
所以就轉換成了二進位
通常用於將帶有不可視字元的資料轉換為全明文好方便傳輸
其原理為 bit 之間的轉換
一般我們的資料最小單位為 byte (8 bits)
在 base64 中一單位為 6 bits
因此總共有 64 個字元的存在
用 wiki 的圖來解說
我們可以看到上面的 Man
先以 ASCII 來看
接著轉為二進位 有 8*3 = 24 個二進位
接著除以 6 再還原成可以得到 4 個字元
這是剛好整除的情況
在這個情況下
要編碼的位元組長度不足 3 的倍數
因此會先補滿 bit 0
再進行編碼
接著 base64 就會把多出來的以 =
來表示
將英文字母順序平移 1 ~ 25 個
比如說 這就是平移一格的結果
明文 : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文 : B C D E F G H I J K L M N O P Q R S T U V W X Y Z A
你可能聽說過一種叫做 ROT13 的加密
其實那就是凱薩密碼平移 13 格的結果
只是 13 這個數字比較特別
由於英文字母有 26 個
因此加密後再加密一次就會變回原文
在這種加密方式中
會有一張密碼表稱為 維吉尼亞方格
橫的為明文
直的為 key
中間一對一的字母就是密文
舉個例子
HELLO
ABCDE
HFNNS
H
直的找 A
就為 H
E
直的找 B
就為 F
L
直的找 C
就為 N
L
直的找 D
就為 N
O
直的找 E
就為 S
將一長條紙捲在棒狀物體上
即可顯示出明文
將明文的字母順序重新排列
變成像柵欄一行一行的感覺
例如
明文 : THE BEST APPLE
我們先去除空白讓他全部連在一起
THEBESTAPPLE
接著兩兩分開
TH EB ES TA PP LE
然後將其上下並排
T E E T P L
H B S A P E
然後將第一行與第二行合併變成
TEETPLHBSAPE
這就是我們加密後的密文
古典密碼就先介紹到這邊
大家有沒有覺得很神奇呢
文字稍微打亂或是運用某種規律就變成了一種加密方式
接著明天我們來說說以大量運算為基礎的現在密碼吧~