第二章 Chapter2
基本定義 | Caesar Cipher | Play Fair | Hill Cipher | Vigenere Cipher |
這個是基本定義我覺得應該要會
Plaintext:Original text--->我後面都用P表示原文
Ciphertext:Coded text--->我後面都用C表示密文
Key:就加密的鑰匙嘛-->我後面都用K表示key
Encryption Algorithm:表加密的演算法
Decryption Algorithm:表解密的演算法
應該會考的解釋名詞:
Cryptography | Study of encryption principles |
研究解碼的方法或原則 | |
Cryptanalysis | Study of encryption principles but without knowing keys...... |
同上...但差在不知道key,需要自己解開!所以可以叫做密碼分析 | |
Cryptology | Field of both cryptography and cryptanalysis |
就是上面Cryptography跟Cryptanalysis的合體....囧rz... |
※注意:有兩個單字請記好,為編碼常見之兩種手法
第一.Substitution Technique 替換法-就是把字母換成另外一種
第二.Transposition Technique 位置排列法-就是把原文從新排列
以下是編碼法
舉例說明:
我用投影片的例子
規則
目前假設規則為向前遞移三個字母,則會變成如下表,a變成d、b變成e...etc以此類推
數字只是代表為英文數字第幾號~跟數學公式有極大關係
1.a | 2.b | 3.c | 4.d | 5.e | 6.f | 7.g | 8.h | 9.i | 10.j | 11.k | 12.l | 13.m | 14.n | 15.o | 16.p | 17.q | 18.r | 19.s | 20.t | 21.u | 22.v | 23.w | 24.x | 25.y | 26.z |
d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z | a | b | c |
編碼原則:
要被編碼的的P為:meet me after the toga party
依序查上面表為m變成p e變成h...etc依此類推...這考出來老師說應該為送分題~
編碼結果如下:
m | e | e | t | m | e | a | f | t | e | r | t | h | e | t | o | g | a | p | a | r | t | y |
p | h | h | w | p | h | d | i | w | h | u | w | k | h | w | r | j | d | s | d | u | w | b |
如以數學算式來看即為
C= ( P + K ) mod 26
以上面的規則來看P就是原本要被編碼的字串 ,而K就是向前遞移的個數3,k=3
公式=> C= ( P + 3 ) mod 26
舉例來說第一個要被編碼的為m原本在26個字母中號碼為13, C = ( 13+3 ) mod 26 為16
然後去找第16個號字母p也就是等於c就是編碼的第一個字母,這是用公式解比較無聊...
反過來說
P = ( C - K) mod 26也就是逆轉回去解碼~這請自行練習囉~
如果老師要我們編碼~就只要看編碼方式部份就好
這個比較簡單,知道規則就很好做編碼部份
一樣用課本例子,先設定一個Key,隨便設定,課本用的為MONARCHY
規則為先把Key先行填入表格,如下紅色字體所表示
再來依照ABCDEFG.....到Z填入剩下表格,注意,KEY出現過的字母不可以再用
還有I跟J只能挑一個使用,但並沒有規定誰不可以用,請自行決定
則表格即為
M | O | N | A | R |
C | H | Y | B | D |
E | F | G | I | K |
L | P | Q | S | T |
U | V | W | X | Z |
(注意:I和J只挑其中一個放入,另外一個不放入~看誰規定)
再來是編碼方法:
假設要編的字串為:balloon
首先第一步為,兩個兩個字一組:ba ll oo n
第一規定,重複的中間加個x
所以兩個兩個字一組就變成:ba lx lo on
(容易發生的疑問,為什麼 oo 沒有中間加個x,因為前面 ll 中間加個x之後,
後面兩個字?@組重複的現象就消失了,所以不用加x)
(※註:如果說給的字串,兩兩一組分割後,最後一個剩下一個字元,怎麼辦?
我查完Google之後,得到結論如下,假設是apple,分割會變成ap pl e,e會落單,則就補上x
變為ap pl ex,以此類推~ )
再來就是替換了
首先是ba
查表發現,ba再同一行,書上規定再同一行的話
就往下遞移,b變成了i,a變成了b,就變成了ib
|
|
再來看lx
l往x方向對到x上方的位置是s
x往u方向對到l的下方位置是u
所以就變成su
|
||||||||
|
lo依照上面方法就變成pm,這個請自己嘗試
發現on在同一row(列),書上規定為同一列的話往右遞移
就變成na
|
|||||
|
所以最後字串就變成ibsupmna
這個編碼就是這樣~
老師就只有說會考
但並沒有說這個要怎麼考,我就以編碼方式來講說這個怎麼編
編碼方式:
先以課本例子
假設要編碼之原文為:paymoremoney
三個字三個字為一組
pay mor emo ney
key為一矩陣,假定為K
K矩陣:
┌ | 17 |
17 |
5 |
┐ |
│ | 21 |
18 |
21 |
│ |
└ | 2 |
2 |
19 |
┘ |
首先先編pay
依照在abcdefg....的依序編號,記得從0開始
p=15號字母
a=0號字母
y=24號字母
型成一個行矩陣設為P
P矩陣:
┌ | 15 |
┐ | ||
│ | 0 |
│ | ||
└ | 24 |
┘ |
將K乘上P,就高中教的矩陣相乘...這不用我教吧...
變成了
┌ | 375 |
┐ | ||
│ | 819 |
│ | ||
└ | 486 |
┘ |
剩最後一步,全部mod 26
意思為每個數字都要除以26然後記下餘數!!!
結果為
┌ | 11 |
┐ | ||
│ | 13 |
│ | ||
└ | 18 |
┘ |
然後找英文第11個字母為L
然後找英文第13個字母為N
然後找英文第18個字母為S
就這樣邊完前三個...後面陸續依照相同方式編碼..
最後邊完結果為:LNSHDLEWMTRW
我自己出測驗題:
P:
Key:
如果這個要解碼會是最難...但如果編碼就會變的頗簡單
我不講故事了,直接教怎麼編碼!
編碼方式
給定字串P:wearediscoveredsaveyourself
給定Key:deceptivewearediscoveredav
編碼方式就跟Caesar很像,只是稍微複雜一點
w對應到的key是d,d是字母a移動3個字母的結果,那w就做相對應移動3個字母變成了z
同理,e對應到的是e,e是字母a移動4個字母的結果,所以e就移動4個字母變成i
再解釋一個,接下來是a對應到c,則表示是字母a移動2個字母到c,所以a就變成c
前三個字母就變成zic.....後面有興趣再慢慢做
注意key不一定跟原字串p一樣長喔~如果key只有短短像是:apple
然後原文p為:thisiseasy
那請自動把key變成跟原文一樣長也就為:appleapple(即重複到字數跟原文一樣多)
那最好是希望老師有提供對照表會更快啦....
我出一小題測試看看,
原文:XNRROIGFEIH
key:damn
解答為:禮拜二再給...答案很有趣...
當然用對照表是最好.....
最後是破解Virgenere的方法(老師有很強烈的提到)
Kasiski破解法
以上破解法感謝006的提供XD~~
以上是這章最後的資料