密碼學幾乎專指加密(encryption)算法,將普通信息(明文,plaintext)轉化成難以理解的資料(密文,ciphertext)的過程。;解密(decryption)算法則是反過程:密文轉換會明文。
1.1.1 密鑰加/解密系統模型
所謂的密碼學就是指對稱密鑰密碼系統。因爲加/解密用的是同一把密鑰,所以還有另一個稱呼,單一密鑰密碼系統。
一般一個密鑰包含下面幾個部分
- 消息空間 M(Message)
- 密文空間 C(Ciphertext)
- 密鑰空間 K(Key)
- 加密算法 E(Encryption Algorithm)
- 解密算法 D(Decryption Algorithm)
它們之間通常是下面的關係:
EK1(M) = C
Dk2(C) = M
DK2(EK1(M)) = M
消息空間中的消息M(明文)通過加密的密鑰K1控制的加密算法加密後得到密文C。
密文C通過解密密鑰K2控制的解密算法恢復會原來的明文M。
1.1.2 古典密碼
在以前,沒有計算機,計算能力低下。當時密碼學都是一些基於字符的密碼算法。密碼算法基本是互相替換(Substitution)或者相互置換(Transposition)。一些好一點的密碼算法,就會接合兩者,進行多次運算。
1. 替代密碼
替代密碼就是明文中的每一個字符被換爲密文中的另一個字符。接受者對密文進行逆向替代,就可以恢復出原來的明文了。在古典密碼學中,有三類替代密碼:
- 單表替代密碼
- 多表替代密碼
- 多字母替代密碼
單表替代密碼,就是一個字符對應一個相應的字符。凱撒密碼就是一種單表替代密碼,也是一種移位替代密碼。
凱撒密碼是對應英文的26個字母向後以移3位。
比如,明文是:coskimo
那麼出來的密文是:FRVNLPR
如果將26個字母分別對應0~25,那麼凱撒密碼變化爲
加密:E( M ) = ( M + 3 ) mod 26
解密:D( C ) = ( C – 3 ) mod 26
在這裏凱撒密碼的密鑰 K = 3。所以這個的一般式爲
加密:E( M ) = ( M + K ) mod 26
解密:D( C ) = ( C – K ) mod 26
很明顯,這個密碼很脆弱。
首先,簡單的單表替代沒有掩蓋明文不同字母的出現的頻率;
其次,移位代替的密鑰空間有限,只有25個密鑰,利用暴力破解攻擊就可以解出。
多表代替密碼是一系列的替代表依次對明文消息的字母進行替代的加密方法。而多字母替換
2. 置換密碼
在置換密碼中,明文和密文的字母保持相同,但順序被打亂。在簡單的縱行置換密碼中,明文以固定的寬度水平的寫在一張紙上,密文按垂直方向讀出;解密就是將密文按相同的寬度垂直寫在紙上,然後水平讀出明文。比如下面的例子:
明文: coskimo is a brand new website which focus on information of Ubuntu and some tutorial.
c | o | s | k | i | m | o | i | s | a | b |
r | a | n | d | n | e | w | w | e | b | s |
i | t | e | w | h | i | c | h | f | o | c |
u | s | o | n | i | n | f | o | r | m | a |
t | i | o | n | o | f | u | b | u | n | t |
u | a | n | d | s | o | m | e | t | u | t |
o | r | i | a | l |
密文: criutuo oatsiar sneooni kdwnnda inhiosl meinfo owcfum iwhobe sefrut abomnu bscatt
版權聲明
Moriarty_221爲本文的CSDN博客
如未註明,均爲原創,轉載請註明出處
轉載請註明:Coskimö » 對稱密碼學:01 概述
版權所有 © 科斯基摩 | 本網站採用cc by-nc-sa 3.0協議進行授權