This project provides a GUI tool for encoding and decoding hidden messages within images using steganography techniques. For added security, the encoded messages are encrypted using various algorithms such as AES, XOR, and RSA.
- Steganography: Conceals data within an image by altering pixel values.
- Encryption Algorithms:
- 🔒 AES: Advanced Encryption Standard (128-bit key size).
- 🔑 XOR: Simple XOR encryption with a custom key.
- 🔐 RSA: Asymmetric encryption using public and private key pairs.
- Password Strength Validation: Ensures that encryption passwords are strong and secure.
- Image Comparison: Displays the original and encoded images side-by-side, with histograms for visual comparison.
- Private Key Management: Generates, saves, and loads RSA private keys for encryption and decryption.
- Python 3.7 or higher
- Libraries:
tkinter
Pillow
matplotlib
cryptography
numpy
re
os
Install the required dependencies using:
pip install Pillow matplotlib cryptography numpy
- Select an image file (
.png
,.jpg
,.jpeg
). - Enter the text you want to encode.
- Choose an encryption algorithm:
- AES: Enter a password for encryption.
- XOR: Enter a custom password.
- RSA: Automatically generates a public/private key pair.
- Click Encode.
- Save the newly encoded image.
- View the original and encoded images side-by-side, along with histograms.
- Select the encoded image file.
- Choose the encryption algorithm used during encoding.
- Enter the decryption key:
- For RSA, load the private key (
.pem
file). - For AES and XOR, enter the key used during encoding.
- For RSA, load the private key (
- Click Decode.
- The hidden message will be displayed.
For AES and XOR, you will be prompted to enter the decryption key as shown below.
Additionally, the password strength validator ensures that your password is strong and meets the required criteria:
For AES and XOR, the password is validated against the following criteria:
- At least 8 characters long
- Contains at least one uppercase letter
- Contains at least one digit
- Contains at least one special character
- Private Key Generation: RSA private and public keys are generated when RSA is selected for encryption.
- Save Key: The private key can be saved as a
.pem
file for later use. - Load Key: During decoding, the private key is required for decryption.
- Encode Section: Input the data to be encoded, choose the encryption method, and embed it into the selected image.
- Decode Section: Select an encoded image, choose the decryption algorithm, and retrieve the hidden data.
- Image Comparison: Visualize differences between the original and encoded images, both side-by-side and using RGB histograms.
The tool provides a comparison of histograms between the cover image and the encoded image for each RGB channel, allowing you to analyze the subtle differences.
- Support for additional file formats.
- Improve performance for encoding/decoding larger images.
- Add more advanced encryption algorithms.
This project is open-source and available under the MIT License.