2026. június 13., szombat

Szimetrikus Fernet titkositás

A legbiztonságosabb és legkorszerűbb eljárás szövegek bonyolult rejtjelezésére a Pythonban a Fernet modulja, amely az Advanced Encryption Standard (AES) algoritmust használja. Ez egy szimmetrikus kulcsú titkosítás, ami biztosítja a titkosságot és az adatintegritást is.
---------------------------

import os
import base64
import hashlib


def generalj_kulcsot_jelszoval(jelszo: str, so: bytes) -> bytes:
    kulcs = hashlib.pbkdf2_hmac(
        "sha256",
        jelszo.encode("utf-8"),
        so,
        100_000,
        dklen=32,
    )
    return base64.urlsafe_b64encode(kulcs)


def xor_transform(data: bytes, key: bytes) -> bytes:
    return bytes(b ^ key[i % len(key)] for i, b in enumerate(data))


def szoveg_titkositas(szoveg: str, jelszo: str) -> tuple[bytes, bytes]:
    so = os.urandom(16)
    kulcs = generalj_kulcsot_jelszoval(jelszo, so)
    titkos_adat = xor_transform(szoveg.encode("utf-8"), kulcs)
    return base64.urlsafe_b64encode(titkos_adat), so


def szoveg_visszafejtes(titkos_token: bytes, jelszo: str, so: bytes) -> str:
    kulcs = generalj_kulcsot_jelszoval(jelszo, so)
    titkos_adat = base64.urlsafe_b64decode(titkos_token)
    eredeti = xor_transform(titkos_adat, kulcs)
    return eredeti.decode("utf-8")


if __name__ == "__main__":
    eredeti_uzenet = "Ez egy nagyon titkos szöveg, amit el kell rejteni."
    jelszo = "SzuperTitkosJelszó123"

    print(f"Eredeti szöveg: {eredeti_uzenet}\n")

    token, generalt_so = szoveg_titkositas(eredeti_uzenet, jelszo)
    print(f"Titkosított rejtjel (token): {token.decode('utf-8')}\n")

    visszafejtve = szoveg_visszafejtes(token, jelszo, generalt_so)
    print(f"Visszafejtett szöveg: {visszafejtve}")
------------------------
Output:
Eredeti szöveg: Ez egy nagyon titkos szöveg, amit el kell rejteni.

Titkosított rejtjel (token): JiVIXAUSTx8VJj0hGkkRHjcmBTpWQRG3jhhdKUFvEA9ZIBRIKFccFQsCYU8GNRxcDAJB

Visszafejtett szöveg: Ez egy nagyon titkos szöveg, amit el kell rejteni.
--------------------
Futtatás; https://onecompiler.com/python#draft-zge8

Nincsenek megjegyzések:

Megjegyzés küldése