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:
- Computer/Laptop
- Internet adgang
- Download VS Code: https://code.visualstudio.com/
- Download Python: https://www.python.org/
*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()