/cryptoc

Cryptographic algorithms for education and entertainment

Primary LanguagePython

cryptoc

Cryptographic algorithms implemented for educational and entertainment purposes. Should never be used in production for actual real-world cryptographic solutions. No external dependencies, written using Python 2.7. Actually made for educational purposes to progressively introduce various concepts from the cryptographic world through various algorithms (status: alpha).

Algorithms

  • ROT, as in ROT13, illustration of the translation between a written character and a number and the use of this translation
  • xOR, illustration of the infamous exclusive Or
  • Affine, illustration of the use of a multi-input mathematical function on letters translated into numbers
  • Caesar cipher, illustration of the use of an alphabet and of a modulo operation as a consequence
  • Atbash, illustration of a substitution and of alphabet manipulation (reversed in this specific case)
  • Book, illustration of using a specific source (a "book" in this case) as a mask instead of a more expected "key")
  • Vigenere, illustration of the use of the use of a keystream with initialization
  • Autokey, illustration of the use of a buffer and feedbacks/loops in cryptographic algorithms
  • Vernam, illustration of a combination of previous illustrations as a way to craft cryptographic algorithms
  • Railfence, illustration of moving elements' positions and orders
  • Keyword, illustration of alphabet letters' order manipulation
  • ARC4, the alleged RC4, illustration of the use of pseudo-randomness generation and key scheduling
  • RSA, illustration of the use of stronger mathematical concepts and of public/private keys

Todo

  • Unified testing library, enjoying the fact that most of the tests are identical and categories of inputs and outputs can be easily mapped
  • Better educational value through smarter commenting, more detailed explanations in the README.md and so forth
  • Add new algorithms
  • Extend it with a sister-project pocpression (or enpocding maybe ?)
  • Provide a framework to toy around with various illustrated cryptographic operations/sub-functions