[파이썬] 파이썬 라이브러리를 활용한 암호화 구현

암호화는 현대의 디지털 환경에서 매우 중요한 역할을 합니다. 개인정보와 기밀 데이터를 보호하기 위해 암호화 기술은 필수적입니다.

파이썬은 다양한 암호화 관련 라이브러리를 제공하여 암호화를 구현하는 것을 쉽게 만들어 줍니다. 이번 포스트에서는 파이썬을 사용하여 암호화를 구현하는 몇 가지 라이브러리를 소개하겠습니다.

1. hashlib 라이브러리

hashlib 라이브러리는 해시 함수를 제공하여 데이터를 암호화하는 데 사용됩니다. 다양한 해시 알고리즘 중에서도 md5, sha1, sha256 등의 알고리즘을 지원합니다.

아래는 hashlib 라이브러리를 사용하여 문자열을 sha256 알고리즘으로 암호화하는 예제 코드입니다.

import hashlib

def encrypt_message(message):
    encoded_message = message.encode('utf-8')
    encrypted_message = hashlib.sha256(encoded_message).hexdigest()
    return encrypted_message

message = "Hello, World!"
encrypted_message = encrypt_message(message)
print("Original Message:", message)
print("Encrypted Message:", encrypted_message)

위 코드에서 encrypt_message 함수는 입력한 메세지를 utf-8 인코딩으로 변환한 뒤, sha256 알고리즘을 사용하여 암호화합니다. 암호화된 메세지는 hexdigest 메소드를 사용하여 16진수 문자열 형태로 추출됩니다.

2. cryptography 라이브러리

cryptography 라이브러리는 다양한 암호화 기술을 제공하는 포괄적인 패키지입니다. cryptography를 사용하면 대칭키 암호화, 비대칭키 암호화 및 인증 등 다양한 기능을 쉽게 구현할 수 있습니다.

아래는 cryptography 라이브러리를 사용하여 대칭키 암호화를 구현하는 예제 코드입니다.

from cryptography.fernet import Fernet

def generate_key():
    key = Fernet.generate_key()
    return key

def encrypt_message(message, key):
    fernet = Fernet(key)
    encrypted_message = fernet.encrypt(message.encode('utf-8'))
    return encrypted_message

def decrypt_message(encrypted_message, key):
    fernet = Fernet(key)
    decrypted_message = fernet.decrypt(encrypted_message).decode('utf-8')
    return decrypted_message

message = "Hello, World!"
key = generate_key()

encrypted_message = encrypt_message(message, key)
decrypted_message = decrypt_message(encrypted_message, key)

print("Original Message:", message)
print("Encrypted Message:", encrypted_message)
print("Decrypted Message:", decrypted_message)

위 코드에서 generate_key 함수는 대칭키를 생성하고, encrypt_message 함수는 입력한 메세지를 대칭키를 사용하여 암호화합니다. decrypt_message 함수는 암호화된 메세지를 대칭키를 사용하여 복호화합니다.

3. rsa 라이브러리

rsa 라이브러리는 비대칭키 암호화를 구현하기 위해 사용됩니다. 비대칭키 암호화는 공개키와 개인키를 사용하여 데이터를 암호화하고 복호화하는 방식입니다.

아래는 rsa 라이브러리를 사용하여 비대칭키 암호화를 구현하는 예제 코드입니다.

from rsa.key import newkeys, PrivateKey, PublicKey

def generate_keypair():
    public_key, private_key = newkeys(2048)
    return public_key, private_key

def encrypt_message(message, public_key):
    encrypted_message = message.encrypt(public_key)
    return encrypted_message

def decrypt_message(encrypted_message, private_key):
    decrypted_message = encrypted_message.decrypt(private_key)
    return decrypted_message

message = "Hello, World!"
public_key, private_key = generate_keypair()

encrypted_message = encrypt_message(message, public_key)
decrypted_message = decrypt_message(encrypted_message, private_key)

print("Original Message:", message)
print("Encrypted Message:", encrypted_message)
print("Decrypted Message:", decrypted_message)

위 코드에서 generate_keypair 함수는 공개키와 개인키를 생성하고, encrypt_message 함수는 입력한 메세지를 공개키를 사용하여 암호화합니다. decrypt_message 함수는 암호화된 메세지를 개인키를 사용하여 복호화합니다.

위에서 소개한 라이브러리는 파이썬으로 암호화를 구현하는 데 유용한 도구입니다. 이외에도 다른 암호화 관련 라이브러리들도 파이썬에서 사용할 수 있으니, 자신의 프로젝트에 적합한 라이브러리를 선택하여 안전하고 강력한 암호화를 구현해보세요.