# Vigenère cipher ## 介紹 Vigenère cipher 就像是兩個輪盤,每個輪盤上都有26個字母,加密或解密的方法就是讓原本的字母對應成另一個輪盤上的字母。以下圖為例,字母`A`可以對應到字母`O`,`A`隔壁的`B`就會對應到`O`隔壁的`P`。 ![image](https://hackmd.io/_uploads/B1zF2pw06.png) 既然有順序性,我們就可以把它變成一個表。透過key我們把原文加密,像是下圖可以看到原文是 decrypted letter,透過 key 把它加密成 Z。 若回到剛剛的輪盤示例,意思就是 key 決定了兩個輪盤要如何對應,當key的字母不同時,兩個輪盤就要重轉成步一樣的配對方式。 ![image](https://hackmd.io/_uploads/HkJvTTvRp.png =400x) ## 範例 以 picoCTF 的 [Vigenere](https://play.picoctf.org/practice/challenge/316?category=2&page=2) 為例子,他的 key 是 `CYLAB`。 假如輸入的句子為 `Helloeveryone`,則這個 key 的使用方法為: ``` H e l l o e v e r y o n e C Y L A B C Y L A B C Y L ``` 透過表,`H` 會用 `C` 這個 key,所以得到,`J`;`e` 會用 `Y` 這個 key,所以得到,`C`,大小寫差異就忽略。 ## ref 圖片來源: https://pages.mtu.edu/~shene/NSF-4/Tutorial/VIG/Vig-Devices.html https://laurencetennant.com/assets/vigenere_decrypt.png