파이썬을 이용한 암호화와 복호화 과정에 대한 이해

암호화란?

암호화는 데이터를 보호하기 위해 평문을 암호로 변환하는 과정입니다. 이는 민감한 정보를 안전하게 전송하거나 저장하기 위해 필수적입니다. 암호화를 사용하면 무단 접근으로부터 데이터를 보호할 수 있습니다.

대칭키 암호화

대칭키 암호화는 암호화와 복호화에 동일한 키를 사용하는 방법입니다. 이런 기법은 간단하고 빠르지만, 키를 안전하게 공유하는 것이 중요합니다.

예를 들어, 파이썬에서 cryptography 라이브러리를 사용하여 대칭키 암호화를 구현할 수 있습니다. 아래는 간단한 대칭키 암호화 예제입니다.

from cryptography.fernet import Fernet

# 키 생성
key = Fernet.generate_key()

# Fernet 객체 생성
cipher_suite = Fernet(key)

# 암호화
plaintext = b"Hello, World!"
ciphertext = cipher_suite.encrypt(plaintext)

# 복호화
decrypted_text = cipher_suite.decrypt(ciphertext)

print(f"암호화된 텍스트: {ciphertext}")
print(f"복호화된 텍스트: {decrypted_text}")

비대칭키 암호화

비대칭키 암호화는 암호화와 복호화에 서로 다른 키를 사용하는 방법입니다. 이 방식은 공개키와 개인키를 사용하여 키 교환과 인증에 사용됩니다.

파이썬에서는 cryptography 라이브러리의 RSA 모듈을 사용하여 비대칭키 암호화를 구현할 수 있습니다. 아래는 비대칭키 암호화의 간단한 예제입니다.

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

# 키 생성
private_key = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048,
)

# 공개키 추출
public_key = private_key.public_key()

# 평문
plaintext = b"Hello, World!"

# 암호화
ciphertext = public_key.encrypt(
    plaintext,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

# 복호화
decrypted_text = private_key.decrypt(
    ciphertext,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

print(f"암호화된 텍스트: {ciphertext}")
print(f"복호화된 텍스트: {decrypted_text}")

이러한 방법을 사용하여 파이썬을 통해 간단하게 암호화와 복호화를 구현할 수 있습니다.

참고 자료