古典密碼-維吉尼亞密碼Vigenere


維吉尼亞密碼Vigenère基礎知識

維吉尼亞密碼是使用一系列凱撒密碼組成密碼字母表的加密算法,屬於多表密碼中的一種

生成維吉尼亞密碼,需要使用表格法。這一表格包括了26行字母表,每一行都由前一行向左偏移一位得到。具體使用哪一行字母表進行編譯是基於密鑰進行的,在過程中會不斷地變換。如下

0ptgfJ.png

Tip:橫着看為密鑰,豎着讀為明文

這樣單單看,很難了解到其中的原理,下面引入一個例子

舉個栗子

假設我們的明文M為:

CRYPTOGRAPHY

選擇一組任意長度的密鑰K(若小於明文長度,則重復),這里我們選擇NIGHT作為關鍵字,重復關鍵字得到最終的密鑰K:

NIGHTNIGHTNI

加密

從明文的第一個字母C開始,對應密鑰中第一位字母N,查表得知為P(明文豎着讀,密鑰橫着讀),重復此操作,最終得到:

明文:CRYPTOGRAPHY
密鑰:NIGHTNIGHTNI
密文:PZEWMBOXHIUG

解密

找到密鑰第一個字母N對應的那一欄,找到P,再看最左邊對應的字母,重復此操作得到明文

維吉尼亞密碼Vigenère的破譯

參考:維吉尼亞密碼破譯

普通的加密可以通過使用簡單的頻率分析破解。但是在維吉尼亞密碼中,E可以被加密成不同的密文,因而簡單的頻率分析在這里並沒有用。

卡西斯基試驗

卡西斯基試驗的原理就是是基於類似the這樣的常用單詞在密文中的重復出現。例如,明文中不同的CRYPTO可能被密鑰ABCDEF加密成不同的密文:

密鑰:ABCDEF AB CDEFA BCD EFABCDEFABCD
明文:CRYPTO IS SHORT FOR CRYPTOGRAPHY
密文:CSASXT IT UKSWT GQU GWYQVRKWAQJB

此時明文中重復的元素在密文中並不重復。然而,如果密鑰相同的話,結果可能便為(使用密鑰ABCD):

密鑰:ABCDAB CD ABCDA BCD ABCDABCDABCD
明文:CRYPTO IS SHORT FOR CRYPTOGRAPHY
密文:CSASTP KV SIQUT GQU CSASTPIUAQJB

此時卡西斯基試驗就能產生效果。對於更長的段落此方法更為有效,因為通常密文中重復的片段會更多。如通過下面的密文就能破譯出密鑰的長度:

密文:DYDUXRMHTVDVNQDQNWDYDUXRMHARTJGWNQD

其中,兩個DYDUXRMH的出現相隔了18個字母。因此,可以假定密鑰的長度是18的約數,即長度為18、9、6、3或2。而兩個NQD則相距20個字母,意味着密鑰長度應為20、10、5、4或2。取兩者的交集,則可以基本確定密鑰長度為2。

弗里德曼試驗

佛里德曼於1920年發明佛里德曼試驗,其基本原理是使用了重合指數來描述密文字母頻率的不勻性,進而破譯密碼。\(K_p\)指目標語言中兩個任意字母相同的概率(英文中為0.067),\(K_r\)指字母表中這種情況出現的概率(英文中為1/26=0.0385),從而密鑰長度可以估計為:

\[{K_p - K_r}\over {K_o - K_r} \]

其中,觀察概率\(K_o\)

\[K_o = {{\sum_{i=1}^c}n_i(n_i-1)\over N(N-1)} \]

其中,c是指字母表的長度(英文為26),N指文本的長度,\(n_1\)\(n_c\)是指密文的字母頻率,為整數。

此方法只是一種估計,會隨着文本長度的增加而更為精確。

在線網站破譯

網站地址

相關題目

題目來源:https://adworld.xctf.org.cn/task/answer?type=crypto&number=5&grade=1&id=5451&page=1

文件信息

0pyriq.png

解題方法

這里提供一個非常強的在線解密網站,在線解密維吉尼亞密碼,頁面如下

0p6G79.png

將密文cipher填入方框中,點擊解密即可

在下方會顯示出分析的信息

0pcCNR.png

在明文里面搜索得到flag關鍵字,即可得到flag

flag{vigenereisveryeasyhuh}

0pcKUA.png


免責聲明!

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



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