1970年代後半からを現代暗号とした場合、それ以前の暗号を古典暗号という
### シフト暗号
数字を決めておき、その数だけ文字をずらして暗号文を作成する
シーザー暗号とも言われる
function str_rot($s, $n = 13) { static $letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $n = (int)$n % 26; if(!$n) return $s; if($n == 13) return str_rot13($s); for($i = 0, $l = strlen($s); $i < $l; $i++){ $c = $s[$i]; if($c >= 'a' && $c <= 'z'){ $s[$i] = $letters[(ord($c) - 71 + $n)% 26]; } else if($c >= 'A' && $c <= 'Z'){ $s[$i] = $letters[(ord($c) - 39 + $n)%26 + 26]; } } return $s; }
### 換字式暗号
換字表を作り、それに従って暗号化する
-> e, a, tの順番に出現頻度が高い。文字の偏りが出てしまう。
### 符号化
文章やデータをコンピュータで扱える形にすることを符号化という。
最もポピュラーなのは、アルファベットや数字、多少の記号だけに限定したASCIIと呼ばれる文字コード。ASCIIコードは16進数で表記することが多い。
上位(2~7)、下位(0~9a~f)の16進数でアルファベットを表現する
上位0、1に対応するのは特殊文字
helloは「68 65 6c 6c 6f」と表現できる