1. 程式人生 > >[CTF]柵欄密碼學習

[CTF]柵欄密碼學習

[CTF]柵欄密碼學習

 

即把將要傳遞的資訊中的字母交替排成上下兩行,再將下面一行字母排在上面一行的後邊,從而形成一段密碼。柵欄密碼是一種置換密碼。

  例如密文:TEOGSDYUTAENNHLNETAMSHVAED

  解密過程:先將密文分為兩行

  T E O G S D Y U T A E N N
  H L N E T A M S H V A E D

  再按上下上下的順序組合成一句話

  THE LONGEST DAY MUST HAVE AN END.

加深的
       密文為:

  PFEE SESN RETM MFHA IRWE OOIG MEEN NRMA ENET SHAS DCNS IIAA IEER BRNK FBLE LODI

  去掉空格:PFEESESNRETMMFHAIRWEOOIGMEENNRMAENETSHASDCNSIIAAIEERBRNKFBLELODI

  共64個字元,以8個字元為一欄,排列成8*8的方陣(凱撒方陣):

  P F E E S E S N
  R E T M M F H A
  I R W E O O I G
  M E E N N R M A
  E N E T S H A S
  D C N S I I A A
  I E E R B R N K
  F B L E L O D I

  從上向下豎著讀:PRIMEDIFFERENCEBETWEENELEMENTSRESMONSIBLEFORHIROSHIMAANDNAGASAKI

  插入空格:PRIME DIFFERENCE BETWEEN ELEMENTS RESMONSIBLE FOR HIROSHIMA AND NAGASAKI





經典加密技術例項
經典加密主要採用了兩種加密技術:替代技術和置換技術。

(1)替代技術

替代技術是將明文中的每個元素(字母、位元、位元組合或字母組合)對映為另一個元素的技術。明文的元素被其他元素所代替而形成密文。在經典加密技術中使用的元素一般為字母或數字。下面給出經典加密中幾種有代表性的替代技術。

1)凱撒密碼

凱撒密碼是最早使用的替代密碼。

定義1 凱撒密碼將字母表視為一個迴圈的表,把明文中的字母用表中該字母后面第3個字母進行替代。凱撤密碼的明文字母和密文字母的對應關係如下:

明文字母: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

密文字母:DEFGHIJKLMNOPQRSTUVWXYZABC

若讓每個字母對應一個數值(a=0,b=1,……,z=25),則該演算法可以表示為:



定義2 將1演算法一般化,即密文字母與明文字母的偏移可以是任意值,形成了所謂的移位密碼,其演算法可以表示為:


k就是加密演算法的金鑰,可以在1到25之間取值。解密演算法可以表示為:



由於k的取值範圍的限制,凱撒密碼的金鑰空間很小,難以抵禦強行攻擊密碼分析。攻擊者最多嘗試25次,就一定能夠破譯密碼。

2)單字母替代密碼

為了加大凱撒密碼的金鑰空間,可以採用單字母替代密碼。單字母替代密碼是將密文字母的順序打亂後與圖文字母對應。

明文字母: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

密文字母:OGR F C Y S A L X U B Z Q T W D V E H J M K P N I

此時的金鑰空間大小為26!,約為4×1026。即使每微秒試一個金鑰,也需要花費約1010年才能窮舉所有的金鑰。因此,強行攻擊法不太適合。

3)Vigenere密碼

Vigenere密碼利用一個凱撤方陣來修正密文中字母的頻率。在明文中不同地方出現的同一字母在密文中一般用不同的字母替代。

凱撒方陣的形式為:

A B C D E F G … Y Z

          B C D E F G H … Z A

          C D E F G H I … A B

          D E F G H I J … B C

                         …

          Z A B C D E F … X Y

加密時,使用一個通訊雙方所共享的金鑰字母串(如:HAPPYTIME),將金鑰字母串重複書寫在明文字母的上方。對要加密的明文字母找到上方的金鑰字母,然後比一下以確定凱撒方陣的某一行〔以該金鑰字母開頭的行〕。最後利用該行的字母表,使用凱撒密碼的加密方法進行替代:

例如:

金鑰: H A P P Y T I E H A P P Y T I M

明文: p l e a s e s e n d t h e d a t a

明文中的第一個e用凱撒方陣中的P行(PQRSTU…O)進行加密,因此被T替代;第二個e用方陣中的T行(TUVWX…S)進行加密,因此被X替代。

即使只選擇凱撒方陣中的任意m行,Vigenere密碼的金鑰字的長度將是26m,窮舉金鑰空間將需要很長時間,例如m=5,金鑰空間超過11000000,已經足以阻止手工窮舉金鑰搜尋。在Vigenere密碼中,一個字母能夠對映成m個可能字母中的一個,這樣的密碼體制稱為多表密碼體制,一般情況下對多表密碼體制的密碼分析比單表困難。

(2)置換技術

置換是在不丟失資訊的前提下對明文中的元素進行重新排列。

1)矩形轉置密碼

將明文寫成矩形結構,然後通過控制其輸出方向和輸出順序來獲得密文。例如,明文please send the data在不同輸出順序下的密文如下圖所示。矩形方陣上方的數字和字母串為代表輸出順序的金鑰,字母串按字母順序輸出(AEFRT)。

輸 出 順 序

1 2 3 4 5

p 1 e a s

e s e n

d t h e

   d a t a
 
輸 入 方 向
 
輸 出 順 序

3 5 1 4 2

p 1 e a s

e s e n

d t h e

   d a t a
 
輸 入 方 向
 
輸 出 順 序

A F T E R

p 1 e a s

e s e n

d t h e

   d a t a
 
輸 入 方 向
 
密文:ped l destaaehtsnea
 
密文:estasneaped eahtl d
 
密文:ped aehtl dsneaesta
 
圖 矩形轉置密碼加密示意圖
 


2)圖形轉置密碼

一個三角形轉置密碼的例子如下圖所示

e

h a v

h a r r y

o k s d o e s

h o w m a n y b o

 

輸 入 方 向
 
輸出方向
 
明文:how many books dose harry have

密文:OSYVEBERAYORHNDAASHMKWOOH
 
圖 三角形轉置密碼加密示意圖
 

http://www.sdpc.edu.cn/jpkc/wlaq/szal/aqslfx/sl7.htm