파이썬과 암호화 라이브러리 비교 및 사용 예제
암호화는 개인 정보와 데이터를 보호하기 위해 중요한 요소입니다. 파이썬은 다양한 암호화 기능을 제공하는 라이브러리를 가지고 있으며, 이를 활용하여 데이터를 안전하게 보호할 수 있습니다. 이번 글에서는 파이썬에서 자주 사용되는 몇 가지 암호화 라이브러리를 비교하고, 각 라이브러리의 사용 예제를 살펴보겠습니다.
1. hashlib 라이브러리
hashlib
는 파이썬의 기본 라이브러리로, 다양한 해시 함수를 제공합니다. 해시 함수는 임의의 크기의 데이터를 고정된 크기의 해시 값으로 변환하는데 사용됩니다. 일반적으로 암호화보다는 데이터 무결성을 확인하는 용도로 주로 사용됩니다.
import hashlib
# 문자열을 MD5 해시로 변환
data = "Hello, world!"
md5_hash = hashlib.md5(data.encode()).hexdigest()
# 문자열을 SHA256 해시로 변환
sha256_hash = hashlib.sha256(data.encode()).hexdigest()
print("MD5 해시:", md5_hash)
print("SHA256 해시:", sha256_hash)
2. cryptography 라이브러리
cryptography
라이브러리는 파이썬에서 암호화와 관련된 기능을 제공하는 완전한 패키지입니다. 대칭키 암호화, 비대칭키 암호화, 메시지 인증 코드 등 다양한 암호화 알고리즘을 지원합니다.
대칭키 암호화
from cryptography.fernet import Fernet
# 대칭키 생성
key = Fernet.generate_key()
# 대칭키로 암호화 객체 생성
cipher = Fernet(key)
# 원문
data = "Hello, world!".encode()
# 암호화
encrypted = cipher.encrypt(data)
print("암호화된 데이터:", encrypted)
# 복호화
decipher = Fernet(key)
decrypted = decipher.decrypt(encrypted)
print("복호화된 데이터:", decrypted.decode())
비대칭키 암호화 (RSA)
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.backends import default_backend
# 비밀키 생성
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
backend=default_backend()
)
# 공개키 추출
public_key = private_key.public_key()
private_key_pem = private_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
)
public_key_pem = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)
print("비밀키:")
print(private_key_pem.decode())
print("공개키:")
print(public_key_pem.decode())
마치며
위 예제들은 파이썬에서 자주 사용되는 암호화 라이브러리 중 일부를 소개한 것입니다. 라이브러리 선택은 사용하는 암호화 방식과 목적에 따라 달라질 수 있으며, 각 라이브러리의 문서를 참고하여 적합한 기능과 알고리즘을 선택하는 것이 중요합니다.
해당 내용은 Python hashlib와 cryptography 공식 문서를 참고하였습니다.
#암호화 #파이썬