s

Wednesday, June 14, 2023

from tkinter import * from tkinter import filedialog, messagebox from cryptography.fernet import Fernet from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC import base64 class PedoCode: def __init__(self, root): self.root = root self.root.title("PedoCode - Message Cryptography") self.root.geometry("800x600") self.root.configure(bg="#F0F0F0") self.root.resizable(False, False) self.create_widgets() def create_widgets(self): title_label = Label(self.root, text="PedoCode", font=("Arial", 24, "bold"), bg="#F0F0F0") title_label.pack(pady=20) input_frame = Frame(self.root, bg="#F0F0F0") input_frame.pack(pady=10) input_label = Label(input_frame, text="Input Message:", font=("Arial", 14), bg="#F0F0F0") input_label.pack(side=LEFT, padx=10) self.input_text = Text(input_frame, height=5, width=40, font=("Arial", 12)) self.input_text.pack(side=LEFT, padx=10) output_frame = Frame(self.root, bg="#F0F0F0") output_frame.pack(pady=10) output_label = Label(output_frame, text="Output Message:", font=("Arial", 14), bg="#F0F0F0") output_label.pack(side=LEFT, padx=10) self.output_text = Text(output_frame, height=5, width=40, font=("Arial", 12)) self.output_text.pack(side=LEFT, padx=10) password_frame = Frame(self.root, bg="#F0F0F0") password_frame.pack(pady=10) password_label = Label(password_frame, text="Password:", font=("Arial", 14), bg="#F0F0F0") password_label.pack(side=LEFT, padx=10) self.password_entry = Entry(password_frame, font=("Arial", 12), show="*") self.password_entry.pack(side=LEFT, padx=10) button_frame = Frame(self.root, bg="#F0F0F0") button_frame.pack(pady=20) encrypt_button = Button(button_frame, text="Encrypt", width=10, font=("Arial", 14), cursor="hand2", command=self.encrypt) self.set_button_color(encrypt_button, "#2ca58d") self.set_button_hover_effects(encrypt_button) encrypt_button.grid(row=0, column=0, padx=10) decrypt_button = Button(button_frame, text="Decrypt", width=10, font=("Arial", 14), cursor="hand2", command=self.decrypt) self.set_button_color(decrypt_button, "#2ca58d") self.set_button_hover_effects(decrypt_button) decrypt_button.grid(row=0, column=1, padx=10) encrypt_file_button = Button(button_frame, text="Encrypt File", width=13, font=("Arial", 14), cursor="hand2", command=self.encrypt_file) self.set_button_color(encrypt_file_button, "#2ca58d") self.set_button_hover_effects(encrypt_file_button) encrypt_file_button.grid(row=1, column=0, padx=10) decrypt_file_button = Button(button_frame, text="Decrypt File", width=13, font=("Arial", 14), cursor="hand2", command=self.decrypt_file) self.set_button_color(decrypt_file_button, "#2ca58d") self.set_button_hover_effects(decrypt_file_button) decrypt_file_button.grid(row=1, column=1, padx=10) copy_input_button = Button(button_frame, text="Copy Input", width=13, font=("Arial", 14), cursor="hand2", command=self.copy_input) self.set_button_color(copy_input_button, "#2ca58d") self.set_button_hover_effects(copy_input_button) copy_input_button.grid(row=2, column=0, padx=10) copy_output_button = Button(button_frame, text="Copy Output", width=13, font=("Arial", 14), cursor="hand2", command=self.copy_output) self.set_button_color(copy_output_button, "#2ca58d") self.set_button_hover_effects(copy_output_button) copy_output_button.grid(row=2, column=1, padx=10) clear_button = Button(button_frame, text="Clear", width=10, font=("Arial", 14), cursor="hand2", command=self.clear) self.set_button_color(clear_button, "#2ca58d") self.set_button_hover_effects(clear_button) clear_button.grid(row=3, column=0, columnspan=2, pady=10) def set_button_color(self, button, color): button.config(bg=color, activebackground=color) def set_button_hover_effects(self, button): button.bind("", lambda event: button.config(bg="#26a185")) button.bind("", lambda event: button.config(bg="#2ca58d")) def encrypt(self): password = self.password_entry.get() if password: salt = b'PEDOCODE2023' key = self.generate_key(password, salt) cipher_suite = Fernet(key) input_message = self.input_text.get("1.0", END).strip().encode() encrypted_message = cipher_suite.encrypt(input_message) self.output_text.delete("1.0", END) self.output_text.insert(END, encrypted_message.decode()) else: messagebox.showinfo("Error", "Please enter a password.") def decrypt(self): password = self.password_entry.get() if password: salt = b'PEDOCODE2023' key = self.generate_key(password, salt) cipher_suite = Fernet(key) input_message = self.input_text.get("1.0", END).strip().encode() try: decrypted_message = cipher_suite.decrypt(input_message) self.output_text.delete("1.0", END) self.output_text.insert(END, decrypted_message.decode()) except Exception as e: messagebox.showinfo("Error", "Invalid input or incorrect password.") else: messagebox.showinfo("Error", "Please enter a password.") def encrypt_file(self): password = self.password_entry.get() if password: salt = b'PEDOCODE2023' key = self.generate_key(password, salt) cipher_suite = Fernet(key) file_path = filedialog.askopenfilename(initialdir="/", title="Select File", filetypes=(("Text Files", "*.txt"), ("All Files", "*.*"))) if file_path: with open(file_path, 'rb') as file: file_data = file.read() encrypted_data = cipher_suite.encrypt(file_data) encrypted_file_path = file_path + ".encrypted" with open(encrypted_file_path, 'wb') as encrypted_file: encrypted_file.write(encrypted_data) messagebox.showinfo("Success", "File encrypted successfully.") else: messagebox.showinfo("Error", "No file selected.") else: messagebox.showinfo("Error", "Please enter a password.") def decrypt_file(self): password = self.password_entry.get() if password: salt = b'PEDOCODE2023' key = self.generate_key(password, salt) cipher_suite = Fernet(key) file_path = filedialog.askopenfilename(initialdir="/", title="Select Encrypted File", filetypes=(("Encrypted Files", "*.encrypted"), ("All Files", "*.*"))) if file_path: with open(file_path, 'rb') as file: file_data = file.read() try: decrypted_data = cipher_suite.decrypt(file_data) decrypted_file_path = file_path[:-10] # Remove the ".encrypted" extension with open(decrypted_file_path, 'wb') as decrypted_file: decrypted_file.write(decrypted_data) messagebox.showinfo("Success", "File decrypted successfully.") except Exception as e: messagebox.showinfo("Error", "Invalid file or incorrect password.") else: messagebox.showinfo("Error", "No file selected.") else: messagebox.showinfo("Error", "Please enter a password.") def copy_input(self): input_text = self.input_text.get("1.0", END) self.root.clipboard_clear() self.root.clipboard_append(input_text) messagebox.showinfo("Success", "Input message copied to clipboard.") def copy_output(self): output_text = self.output_text.get("1.0", END) self.root.clipboard_clear() self.root.clipboard_append(output_text) messagebox.showinfo("Success", "Output message copied to clipboard.") def clear(self): self.input_text.delete("1.0", END) self.output_text.delete("1.0", END) self.password_entry.delete(0, END) def generate_key(self, password, salt): kdf = PBKDF2HMAC( algorithm=hashes.SHA256(), length=32, salt=salt, iterations=100000, ) key = base64.urlsafe_b64encode(kdf.derive(password.encode())) return key if __name__ == "__main__": root = Tk() app = PedoCode(root) root.mainloop()
Latest
Next Post

0 comments: