https://github.com/lfarci/vigenere_cipher
Vigenere cipher tool.
https://github.com/lfarci/vigenere_cipher
c c-plus-plus cipher kasiski-examination kasiski-method kasiski-test security
Last synced: 5 days ago
JSON representation
Vigenere cipher tool.
- Host: GitHub
- URL: https://github.com/lfarci/vigenere_cipher
- Owner: lfarci
- Created: 2019-02-22T08:08:42.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2019-04-19T20:06:32.000Z (about 6 years ago)
- Last Synced: 2025-04-28T11:17:57.631Z (5 days ago)
- Topics: c, c-plus-plus, cipher, kasiski-examination, kasiski-method, kasiski-test, security
- Language: C++
- Homepage:
- Size: 5.6 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.MD
Awesome Lists containing this project
README
# Frequential analysis tool
Assignment submitted by Logan Farci (47923) and Anthony Farci (49737) for the Security course of Mr Absil (ABS) at HE2B ESI (2018-2019).# Setup
Once the project is cloned locally, run the following commands...
```
$ cd
$ make
```
**Note:** the code use the POSIX operating system API. This code only run Unix systems.
# How to use
## General ommand
```
./sec <-vigenere | -caesar> [your key]
```### Arguments
1. **Action:**
- ```cipher``` in order to cipher ```source``` and store the result in ```destination```.
- ```uncipher``` in order to uncipher ```source``` and store the result in ```destination```.
- ```attack``` in order to make frequential analysis on ```source``` and store the result in ```destination```.
2. **Cipher type:**
- ```-vigenere``` in order to use *Vigenère* ciphering.
- ```-caesar``` in order to use *Caesar* ciphering.
2. **Source:** the path to the file to read from.
3. **Destination:** the path to the file that will store the result of the treatment.
4. **Key:** is the key. It is a character string, each character corresponding to its position in the alphabet. A key of size 1 should be used with Caesar cipher. Also, when attacking the key optional (when given it is not treated).### Examples
#### Ciphering example
In order to cipher ```initial_message```, use the following command:
```
./sec cipher -vigenere initial_message ciphered_message example
```
The ciphered content is stored in the ```ciphered_message``` file.**Note:** ciphering in Vigenère or in Caesar will be treated the same way.
#### Unciphering example
In order to uncipher ```ciphered_message```, use the following command:
```
./sec uncipher -vigenere ciphered_message unciphered_message example
```
The uciphered content is stored in the ```unciphered_message``` file.**Note:** unciphering Vigenère or Caesar will be treated the same way.
#### Vigenère frequential analysis example
In order to break ```ciphered_message```, use the following command:
```
./sec attack -vigenere ciphered_message broken_message
```
The uciphered content is stored in the ```broken_message``` file.#### Caesar frequential analysis example
In order to break ```ciphered_message```, use the following command:
```
./sec attack -caesar ciphered_message broken_message
```
The uciphered content is stored in the ```broken_message``` file.# Known bugs
This frequential analysis implementation is based on the fact that the letter 'e' is the most frequent in English. Trying to analyse and uncipher (without the key) a text that does not respect this assumption will result in gibberish.Also, during the frequential analysis, if the key length divides the text in subtexts with a different most frequent character than 'e', the analysis won't be abble to find the right key.