Implémentation en C de chiffrements classiques (César, Vigenère) : chiffre et déchiffre un message selon une clé.
Telecharger & tester
- WebAssembly: Testable directement dans le navigateur ci-dessus.
make && ./103cipher (chiffrement par matrice de transposition, -h pour l'aide)
103cipher est un projet Epitech de piscine qui implemente un chiffrement de type Hill cipher, une methode de cryptographie ou la cle de chiffrement est une matrice. Le principe general consiste a transformer a la fois le message et la cle en suites de nombres via la table ASCII, puis a les organiser en matrices dont la multiplication produit le message chiffre.
La cle, transcrite en ASCII, est rangee dans la plus petite matrice carree possible en remplissant les lignes une a une (des zeros sont ajoutes en complement si necessaire). Le message clair, lui aussi transcrit en ASCII, est range dans une matrice dont le nombre de colonnes correspond a la taille de la matrice cle et dont le nombre de lignes est minimal. Le produit des deux matrices, ecrit ligne par ligne, constitue le message chiffre.
Le dechiffrement suit le processus inverse et necessite d'inverser la matrice cle -- une operation directe en dimension 2 ou 3, mais nettement plus complexe au-dela, ce qui est traite comme un bonus. La matrice cle inversee, affichee avec ses elements separes par des tabulations, permet de retrouver le message d'origine par multiplication.
L'usage est ./103cipher message key flag, le flag valant 0 pour chiffrer et 1 pour dechiffrer. L'utilisation d'une bibliotheque de calcul matriciel est interdite, la multiplication et l'inversion de matrices etant entierement codees a la main. Les bonus suggeres incluent la cryptanalyse du code (retrouver le message sans connaitre la cle) et le raffinement du procede de chiffrement.
Projet suivant
