This project is a simulation of various cryptography algorithms I learned in the 6th Semester of B.Tech. To learn the application of the algorithms I created a front-end application based on ReactJs and programmed all the algorithms in Javascript. Later I added a Backend server written in Django to work around the limitations of large numbers that are not supported by Javascript but are supported by Python.
Caesar Cipher is a simple substitution cipher where each letter of the plaintext is replaced by a letter that is a fixed number of positions down the alphabet.
Hill Cipher is a polygraphic substitution cipher that encrypts blocks of plaintext letters. The algorithm uses matrix multiplication to encrypt and decrypt the message.
Vernam Cipher is a stream cipher that uses a key that is as long as the message. The key is combined with the plaintext using the XOR operation to produce the ciphertext.
Vigenere Cipher is a polyalphabetic substitution cipher where the plaintext is combined with a keyword. The keyword is repeated until it matches the length of the plaintext. The algorithm uses a Vigenere table to encrypt and decrypt the message.
Playfair Cipher is a polygraphic substitution cipher that encrypts pairs of plaintext letters. The algorithm uses a 5x5 matrix containing a keyword to encrypt and decrypt the message.
RSA is a public key cryptosystem that uses two keys: a public key and a private key. The public key is used for encryption and the private key is used for decryption.
AES is a symmetric block cipher that encrypts and decrypts data in blocks of 128 bits. The algorithm uses a key that can be 128, 192, or 256 bits long.
DES is a symmetric block cipher that encrypts and decrypts data in blocks of 64 bits. The algorithm uses a key that is 56 bits long.
Diffie-Hellman Key Exchange is a method for securely exchanging cryptographic keys over a public channel. The algorithm allows two parties to agree on a shared secret without exchanging the secret key.
ElGamal is a public key cryptosystem that uses two keys: a public key and a private key. The public key is used for encryption and the private key is used for decryption.
Rail Fence Cipher is a transposition cipher that encrypts plaintext by writing it in a zig-zag pattern on a set number of rows. The ciphertext is obtained by reading the letters off in a diagonal pattern.
- Clone the repository
- Install dependencies by running npm install
- Run the project using npm start
- The app will open in your browser at http://localhost:3000
- Select the algorithm you want to use from the dropdown menu
- Enter the plaintext and the key (if required)
- Click on the encrypt or decrypt button to see the result.
Contributions are welcome. If you want to contribute to the project, please follow these steps:
- Fork the repository
- Create a new branch with your changes
- Push your changes to your branch
- Create a pull request