playfair加密過程(密碼學_古典密碼學_多圖加密算法)


Playfair

原理:多圖替代 polygraphic substitution

一、密鑰

密鑰是一個5*5的矩陣,但是英文中有26個字母,誰的多余的呢?

——j是多余的 (‘j’渴望擁有姓名!)

如果明文中有‘j’,當成‘i’處理。誰讓他倆長得這么像呢?

密鑰的生成過程有點類似於key word算法密鑰的生成過程

  1. 選定一個單詞
  2. 去掉重復的字母和字母'j'
  3. 每行五個,把2.的結果排好
  4. 對於未使用的,按照字母表順序每行五個排好

舉個栗子:

  1. 選定單詞"harpsichord"(一種樂器,大鍵琴)
  2. 去掉重復字母和字母'j':"harpsicod"
  3. 將2.的結果放到矩陣中
    • 第一行:H A R P S
    • 第二行:I C O D
  4. 未使用的字母:B E F GK L M N Q T U V W X Y Z接着3.填下去
    • 第二行:I C O D B
    • 第三行:E F G K L 注意,這里沒有字母'J'!
    • 第四行:M N Q T U
    • 第五行:V W X Y Z

最后結果:

OU`$A1GE1KPLDWIOINQ%)KC

二、加密過程

多圖加密算法是對明文進行按對加密的,

加密時,在密鑰矩陣中,

先找到該明文字符對中兩個字符的位置,

然后根據三個規則,確定好輸出的密文對

1、三個加密規則

對於每個明文對,在密鑰矩陣中的位置關系不過三種:

  • 只同行
    • 將會被它們右邊的字符分別替代
    • 如果該字符在最右邊一列,將會被同行 最左邊一列的那個字符代替(其實就是“穿透”過去)
  • 只同列
    • 將會被它們下邊的字母分別替代
    • 如果該字符在最下面一行,將會被同列 最上邊一行的那個字符代替(其實就是“穿透”過去)
  • 既不同行也不同列
    • 如果兩個明文對,既不同行也不同列,那么將它們連起來,記為明文鏈
    • 明文鏈就可以確定一個矩陣,它們的連線是該矩陣的對角線
    • 每個矩陣有兩條對角線,另外一條記為密文鏈
    • 明文對將會被密文鏈上,和明文對同行的兩個字母替代

顯然,似乎應該有一個位置關系——同行同列,

如果明文對的兩個字符是同行同列,是什么情況?——這說明這兩個字符是相同的。

那么這三條規則則失效了,

其實,除了明文對為重復字母,這三條規則遇到一些情況也會失效:

  • 明文中有字母'j'
  • 如果明文是奇數個字母,那最后一個字母不就是單身狗了?

2、三個預處理

針對於上面的三個情況,“兵來將擋水來土掩”,我們需要對明文對進行三個預處理

在對明文正式進行加密之前,還需要對明文進行三個預處理:

  1. 將明文中的字母'j'替代成'i'
    • j:為什么總是我???
    • ——因為密鑰矩陣中就沒有‘j’啊!
  2. 將重復的字母中間加上特殊字母'q'
    • 如果是重復字母對,則
  3. 如果明文是奇數個字母,需要在最后加上特殊字母'q'

3、舉個例子

使用我們剛剛生成的密鑰矩陣,對“speciallity”進行加密

OU`$A1GE1KPLDWIOINQ%)KC

首先,對明文進行預處理:

  1. 明文中沒有字母'j',無需處理
  2. 在兩個’L‘之間加上'Q'
  3. 加上’Q‘之后,明文變成了偶數個
    • 注意,2.一定要在3.之前!
    • 如果我們反過來,明文對中有重復字母且為奇數個,那我們:
      • 現在最后加上無效字符'Q',明文變成了偶數個
      • 在重復字母中間加上特殊字符'Q',明文變成了奇數個
      • 再在最后加上特殊字符’Q‘,明文對變成了偶數個,但是最后兩個自身重復了,還能再加上特殊字符’Q‘嗎?——當然不行,那最后就有了三個’Q‘

經過預處理,明文變成了:SP EC IA LQ LI TY

  • (S,P)->(H,S)

    • 它們的位置關系是同行
    • S在最右側,所以變成了第一列的同行字母'H'
    • P變成了右邊的字母'S'
  • (E,C)->(F,I)

    • 它們既不同行也不同列
    • 明文鏈(E,C)(紅色箭頭所示)確定了矩陣(紅色方框內):

    M{N4A3VG$OTZGF8BO73A$2

    • 矩陣中另一條對角線為密文鏈(F,I)(藍色箭頭所示)
  • (I,A)->(C,H)

  • (L,Q)->(G,U)

  • (L,I)->(E,B)

  • (T,Y)->(Y,P)

    • 這個關系是同列
    • 和(S,P)的變化過程很像

最后“speciallity”變成了“hsfichguebyp”


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM