EncryptoCLI 0.4.1
A command-line program for encrypting, decrypting, and hashing files
License: MIT
Requires Python: >=3.10
Keywords: encryption, decryption, hashing, steganography, cli, cryptography

# EncryptoCLI - By Arpan Pandey
![EncryptoCLI Thumbnail](./docs/EncryptoCLI-Thumbnail.png)

## 📚 Description
Encrypto CLI is a command-line program that provides you with an intuitive and easy-to-use program that allows for a highly efficient and customizable interface to generate hashes of files or encrypt them. This allows you to encrypt and decrypt files or text data using either **Fernet (AES)** or **PGP encryption**. This is powered by the [Cryptography Module](https://cryptography.io/en/latest/) and [python-gnupg](https://python-gnupg.readthedocs.io/).

## Technologies Used
* Python3
* Cryptography Module (Fernet & PGP Encryption)
* python-gnupg (GPG/PGP Support)
* Hashing Module
* Termcolor
* InquirerPy
* Scrypt

## ✨ Features

### Encryption Methods
- **AES (Fernet)**: Symmetric encryption using passwords
- **PGP**: Asymmetric encryption using public/private keys

### Operations
- **Hashing**: Generate cryptographic hashes (MD5, SHA256, SHA512, BLAKE2)
- **Encryption**: Protect your data with multiple cipher methods
- **Decryption**: Recover encrypted data
- **Steganography**: Hide encrypted data in images

## How it works?
The idea is very simple. The program first asks you about which operation do you want to perform and then asks you 2-3 questions relative to which operation you have selected.![First Image](./docs/screenshots/1.png)    

## Hashing
You can generate hashes for text or file data by selecting the algorithm from the 5 options provided: 
![Hashing Image](./docs/screenshots/3.png)
The five algorithms supported are:
* MD5
* SHA256
* SHA512
* BLAKE2
* BLAKE2b

Also, if you are interested in an analysis of these algorithms or implementing them by yourself you can head over to this article that I wrote on [hashing](https://hackersreboot.tech/articles/Cryptography/hashing).

## Encrypting 
You can encrypt data by going through these steps.
1. Select the type of data you want to encrypt. ![Encrypt Type Selection](./docs/screenshots/6.png)
2. Select the encryption method (AES or PGP)
3. Input the data (either the text or path to a file). ![Encrypt Data Input](./docs/screenshots/7.png)
4. For AES: Enter a password. For PGP: Enter recipient's email. ![Encrypt Data Password](./docs/screenshots/8.png)
5. And you are done.

## Decrypting 
You can decrypt data by going through these steps.
1. Select the type of data you want to decrypt. ![Decrypt Type Selection](./docs/screenshots/9.png)
2. Select the decryption method (AES or PGP)
3. Input the data (either the text or path to a file). ![Decrypt Data Input](./docs/screenshots/10.png)
4. Enter the password or passphrase. ![Decrypt Data Password](./docs/screenshots/11.png)
5. And you are done.

## Steganography
You can encrypt and hide your data in an image using **LSB (Least Significant Bit)** or **DCT (Frequency Domain)** steganography methods. Both methods support PNG format for lossless embedding.

### Encrypt

1. Select the type of data you want to encrypt.
2. Select **Image** as output type 
3. Input path to the image where your secret will be hidden
4. Enter the text/secret you want to encrypt and hide
5. Enter a password.
4. And you are done your secret has been hidden in the image named "encrypto.png"


### Decrypt

1. Select **Image** as the type of data you want to decrypt.
3. Input path to the image file you want to decrypt.
4. Enter the text/secret you want to encrypt and hide
5. Enter the password. 
4. And you are done.




## 🐋 Docker
You can pull this image from Docker Hub and build it very easily.
1. Just pull the image. 
    ```bash
    docker pull arpanpandey/encrypto:latest
    ```
OR 

1. You can build the image using.
    ```bash
    docker build --pull --rm -f "Dockerfile" -t arpanpandey/encrypto:latest "."
    ```

2. Running the container with the image (Be sure to put the `-t` and `-d` flag.)
    ```bash
    docker run -t -d arpanpandey/encrypto:latest
    ```

## License
This project is licensed under the MIT License.

### Video Demo
You can access the video demo at [https://youtu.be/Zmf2EK9jPCw](https://youtu.be/Zmf2EK9jPCw)

### Contributors 🏆🏆

<a href="https://github.com/Arpan-206/EncryptoCLI/graphs/contributors">
<img src="https://contrib.rocks/image?repo=Arpan-206/EncryptoCLI" />

### MY BLOG
https://hackersreboot.tech/

#### Thank You!
Thanks a lot to the team at CS50 for teaching me so much about the fascinating world of computer science and program.