最近訓練CTF的時候,發現密碼學這塊的知識不太系統,所以自己接下來會陸陸續續整理出來
今天學習了柵欄密碼,BugkuCTF里面的一道叫做“聰明的小羊”的題就與柵欄密碼相關
特點
柵欄密碼與其他的密碼加密方式不太一樣,它是直接對明文中的內容進行置換操作
並不涉及明文中內容的改變!
加密方式一:
按對角線的順序寫出明文,再以行的順序讀出作為密文
明文:thank you for your arrival
對角線寫出:
t a k o f r o r r v a
h n y u o y u a r i l
按行寫出密文:
takofrorrvahnyuoyuaril
其中行代表了加密的深度,上面是兩行,所以加密的深度是2,如果深度增加,只要對角線的長度也增加即可
加密方式二
由於上面的加密方式不涉及密鑰,顯得易於破解
於是便有了一種需要密鑰的更復雜的方案:
即將明文一行行寫出,呈矩形排列,然后將列的次序打亂,最后以列的次序讀出。
而密鑰就是列的次序
如下圖:

關於這種加密的解密方式(其實不難)
只要將密文的數量n進行因式分解,重新排列成不同的矩陣,再進行相應的處理即可
更進一步地:只要再次進行幾次這樣的置換,整個矩陣就會和原來的矩陣相差很大,解密者就難以將其重構還原(下面再貼張圖)

