kriptográfiai algoritmus

Kiejtés

  • IPA: [ ˈkriptoɡraːfijɒjiɒlɡoritmuʃ]

Főnév

kriptográfiai algoritmus

  1. (matematika, algoritmusok) A kriptográfiai algoritmusok széles körben alkalmazottak titkosításra, aláírások generálására, és más adatbiztonsági célokra. Pythonban a cryptography és a hashlib könyvtárak széleskörű funkcionalitást biztosítanak ezek megvalósításához. Az alábbiakban bemutatom néhány alapvető kriptográfiai algoritmus implementációját példákon keresztül.



1. Hash algoritmusok (SHA-256 példával)

A hash algoritmusok adatokat fix méretű „ujjlenyomattá” alakítanak. Ez hasznos jelszavak tárolásánál vagy adatintegritás ellenőrzésére.

import hashlib

# Szöveg, amit hashelni szeretnénk
data = "Hello, kriptográfia!"

# SHA-256 hash generálása
hash_object = hashlib.sha256(data.encode())
hash_hex = hash_object.hexdigest()

print("SHA-256 hash:", hash_hex)

2. AES titkosítás (Symmetric Encryption)

Az AES (Advanced Encryption Standard) algoritmus egy szimmetrikus titkosítási módszer.

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.primitives import padding
from cryptography.hazmat.backends import default_backend

# Kulcs és inicializáló vektor (IV) (16 byte hosszú)
key = b"mysecretkey123456"
iv = b"initialvector123"

# Üzenet titkosítása
data = b"Ez egy titkos üzenet."

# Padding az adathoz
padder = padding.PKCS7(128).padder()
padded_data = padder.update(data) + padder.finalize()

cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
encryptor = cipher.encryptor()
encrypted_data = encryptor.update(padded_data) + encryptor.finalize()

print("Titkosított adat:", encrypted_data)

# Üzenet visszafejtése
decryptor = cipher.decryptor()
decrypted_padded_data = decryptor.update(encrypted_data) + decryptor.finalize()

# Padding eltávolítása
unpadder = padding.PKCS7(128).unpadder()
decrypted_data = unpadder.update(decrypted_padded_data) + unpadder.finalize()

print("Eredeti üzenet:", decrypted_data.decode())

3. RSA algoritmus (Asymmetric Encryption)

Az RSA egy nyilvános kulcsú titkosítási módszer. Az alábbi példa bemutatja az RSA kulcsgenerálást és titkosítást.

from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives import hashes

# RSA kulcspár generálása
private_key = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048,
)

public_key = private_key.public_key()

# Üzenet titkosítása a nyilvános kulccsal
message = b"RSA titkos üzenet"
encrypted = public_key.encrypt(
    message,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)
print("Titkosított üzenet:", encrypted)

# Üzenet visszafejtése a privát kulccsal
decrypted = private_key.decrypt(
    encrypted,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)
print("Visszafejtett üzenet:", decrypted.decode())

4. Digitális aláírás (RSA-val)

A digitális aláírás lehetővé teszi az üzenetek hitelességének és integritásának ellenőrzését.

from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives import hashes

# Üzenet
message = b"Ez egy aláírt üzenet."

# Aláírás a privát kulccsal
signature = private_key.sign(
    message,
    padding.PSS(
        mgf=padding.MGF1(hashes.SHA256()),
        salt_length=padding.PSS.MAX_LENGTH
    ),
    hashes.SHA256()
)
print("Aláírás:", signature)

# Aláírás ellenőrzése a nyilvános kulccsal
try:
    public_key.verify(
        signature,
        message,
        padding.PSS(
            mgf=padding.MGF1(hashes.SHA256()),
            salt_length=padding.PSS.MAX_LENGTH
        ),
        hashes.SHA256()
    )
    print("Az aláírás érvényes.")
except Exception as e:
    print("Az aláírás érvénytelen:", str(e))

5. HMAC (Hash-based Message Authentication Code)

A HMAC biztosítja az üzenetek hitelességét és integritását egy titkos kulcs segítségével.

import hmac
import hashlib

# Kulcs és üzenet
key = b"titkoskulcs"
message = b"HMAC üzenet"

# HMAC generálása
h = hmac.new(key, message, hashlib.sha256)
hmac_result = h.hexdigest()

print("HMAC:", hmac_result)

Fordítások