Byg dit eget Moderne kryptering med fernet

Introduktion

I 2001 blev AES (Advanced Encryption Standard) valgt som den nye standard for sikker kryptering efter en konkurrence arrangeret af den amerikanske regering. AES erstattede den gamle DES-standard, der var blevet for svag. AES bruger kompleks matematik og 128-, 192- eller 256-bit nøgler, hvilket gør den ekstremt sikker. Fernet er en implementering, der bruger AES til at beskytte vores data. I dag beskytter AES-kryptering alt fra din WhatsApp-beskeder til din netbank, faktisk beskytter den så godt, at selv supercomputere ville tage milliarder af år at knække den!

Lav din egen Ceasar Cipher

Forudsætninger: 

*Husk at installere “cryptography” biblioteket” via terminal inde på VS Code ved at indtaste “pip install cryptography”

Samlet løsning

				
					from cryptography.fernet import Fernet
import os
# Filnavn til opbevaring af nøglen
KEY_FILE = "secret.key"
def load_or_generate_key():
    """Indlæser den eksisterende nøgle fra fil eller genererer en ny."""
    if os.path.exists(KEY_FILE):
        with open(KEY_FILE, "rb") as key_file:
            key = key_file.read()
    else:
        key = Fernet.generate_key()
        with open(KEY_FILE, "wb") as key_file:
            key_file.write(key)
        print("Ny nøgle genereret og gemt i secret.key")
    return key
def encrypt_message(key, message):
    """Krypterer en besked med den givne nøgle og returnerer som streng."""
    f = Fernet(key)
    encrypted = f.encrypt(message.encode())
    return encrypted.decode()  # Fernet output er base64, så .decode() virker
def decrypt_message(key, encrypted_message):
    """Dekrypterer en besked med den givne nøgle."""
    f = Fernet(key)
    try:
        decrypted = f.decrypt(encrypted_message.encode())
        return decrypted.decode()
    except Exception as e:
        return f"Fejl under dekryptering: {e}"
def main():
    key = load_or_generate_key()
    while True:
        print("\n--- Fernet Krypteringsmenu ---")
        print("1. Krypter en besked")
        print("2. Dekrypter en besked")
        print("3. Afslut")
        valg = input("Vælg en mulighed (1-3): ").strip()
        if valg == "1":
            besked = input("Indtast beskeden, der skal krypteres: ")
            encrypted = encrypt_message(key, besked)
            print(f"Krypteret besked: {encrypted}")
        elif valg == "2":
            encrypted_input = input("Indtast den krypterede besked: ")
            decrypted = decrypt_message(key, encrypted_input)
            print(f"Dekrypteret besked: {decrypted}")
        elif valg == "3":
            print("Afslutter programmet.")
            break
        else:
            print("Ugyldigt valg, prøv igen.")
if __name__ == "__main__":
    main()