/cipher

Encode/decode a text message using various ciphers

Primary LanguageCBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Cipher Suite

The output of an exercise in learning how various ciphers work; an application that has the ability to encode/decode a text message using various ciphers.

Current ciphers supported:

  • Caesar cipher
  • Vigenère cipher

Getting Started

First build the app:

make

An executable named cipher will be created in the bin/ directory.

From there, use the help command to see the list of options available.

cipher --help

Tests

Build the tests with

make test

An executable named run-tests will be created in the bin/ directory.

Run the tests by executing run-tests

run-tests

Static Analysis

Static analysis can be run on the codebase using Cppcheck and/or Infer.

I've made Makefile rules to run these tools with some suitable arguments.

make check-cppcheck
make check-infer

To-Do

  • Start finding ways to create a tool to help decipher Vigenère ciphers
  • Add autokey mode to Vigenère cipher
  • Add Vigenère cipher variation: Variant Beaufort
  • Make Caesar & Vigenère ciphers able to work with a provided custom alphabet
    • What should happen if a character in the key or plaintext is not present in the alphabet?
      • Emit a warning and ignore the unknown character?
  • Add ability to read/write input/output files