Python Project - Encrypt and Decrypt files with Symmetric Encryption
File Encryption/Decryption: Create a program that encrypts and decrypts files.
Input values:
User interacts with the program by selecting files to encrypt or decrypt and providing encryption/decryption keys.
Output value:
Encrypted or decrypted versions of the selected files based on user input.
Example:
Input values: 1. Select a file to encrypt: "test.txt" 2. Enter the encryption key: "secretkey123" Output value: The program encrypts the file "test.txt" using the provided encryption key "secretkey123" and saves the encrypted version as "test_encrypted.txt". Input values: 3. Select a file to decrypt: "test_encrypted.txt" 4. Enter the decryption key: "secretkey123" Output value: The program decrypts the file "test_encrypted.txt" using the provided decryption key "secretkey123" and saves the decrypted version as "document_decrypted.txt".
Solution: Using Fernet (Symmetric Encryption with Cryptography Library)
Code:
# Import necessary modules from cryptography library
from cryptography.fernet import Fernet
# Function to generate an encryption key and save it
def generate_key():
key = Fernet.generate_key() # Generate a new Fernet encryption key
with open("secret.key", "wb") as key_file: # Save the key to a file
key_file.write(key)
# Function to load an existing encryption key from file
def load_key():
return open("secret.key", "rb").read() # Read and return the encryption key
# Function to encrypt a file using a provided key
def encrypt_file(file_path):
key = load_key() # Load the encryption key
fernet = Fernet(key) # Create a Fernet instance with the key
# Read the file content
with open(file_path, "rb") as file:
file_data = file.read()
# Encrypt the file data
encrypted_data = fernet.encrypt(file_data)
# Write the encrypted data to a new file
with open(f"{file_path}_encrypted", "wb") as file:
file.write(encrypted_data)
# Function to decrypt an encrypted file using the key
def decrypt_file(file_path):
key = load_key() # Load the encryption key
fernet = Fernet(key) # Create a Fernet instance with the key
# Read the encrypted file content
with open(file_path, "rb") as file:
encrypted_data = file.read()
# Decrypt the file data
decrypted_data = fernet.decrypt(encrypted_data)
# Write the decrypted data to a new file
with open(f"{file_path}_decrypted", "wb") as file:
file.write(decrypted_data)
# Example usage:
generate_key() # Only run once to generate the key
encrypt_file("test.txt") # Encrypt the file
decrypt_file("test.txt_encrypted") # Decrypt the file
Explanation:
- Generate Encryption Key: Creates a secure key using Fernet and saves it.
- Load Encryption Key: Reads the key from file for encryption or decryption.
- Encrypt File: Encrypts file content using Fernet with the loaded key.
- Decrypt File: Decrypts the encrypted file with the same key.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics