[파이썬] 단방향 및 양방향 암호화

암호화는 현대의 정보 보안에서 매우 중요한 역할을 합니다. 사용자의 개인 정보, 비밀번호 및 기타 중요한 데이터를 보호하기 위해 암호화 기술을 사용합니다. Python은 다양한 암호화 알고리즘과 패키지를 제공하여 암호화 작업을 수행할 수 있습니다.

단방향 암호화

단방향 암호화는 원문을 암호화된 문자열로 변환하는 과정을 말합니다. 이러한 암호화 방식은 복호화가 불가능하며, 주로 비밀번호와 같은 보안 관련 데이터를 저장할 때 사용됩니다.

Python에서 가장 일반적으로 사용되는 단방향 암호화 알고리즘은 해시 함수입니다. 해시 함수는 임의의 길이의 데이터를 고정된 길이의 값으로 매핑시키는 함수입니다.

아래는 Python에서 hashlib 패키지를 사용하여 SHA-256 해시 함수를 사용하는 예제 코드입니다:

import hashlib

def hash_password(password):
    hash_object = hashlib.sha256(password.encode())
    hashed_password = hash_object.hexdigest()
    return hashed_password

password = "mypassword"
hashed_password = hash_password(password)
print(hashed_password)

위 코드는 "mypassword"라는 문자열을 SHA-256 해시 함수를 사용하여 암호화된 64자리의 문자열로 변환합니다.

양방향 암호화

양방향 암호화는 원문을 암호화된 문자열로 변환하고, 다시 암호화된 문자열을 원문으로 되돌릴 수 있는 암호화 방식을 말합니다. 이러한 암호화 방식은 데이터의 안전한 전송 및 저장에 사용됩니다.

Python에서는 cryptography 패키지를 사용하여 다양한 대칭키 및 비대칭키 알고리즘을 포함한 양방향 암호화를 수행할 수 있습니다.

아래는 cryptography 패키지를 사용하여 AES 대칭키 암호화를 수행하는 예제 코드입니다:

from cryptography.fernet import Fernet
import base64

def encrypt_message(message, key):
    f = Fernet(key)
    encrypted_message = f.encrypt(message.encode())
    return encrypted_message

def decrypt_message(encrypted_message, key):
    f = Fernet(key)
    decrypted_message = f.decrypt(encrypted_message)
    return decrypted_message.decode()

key = base64.urlsafe_b64encode(b"mysecretkey")
message = "Hello, world!"
encrypted_message = encrypt_message(message, key)
decrypted_message = decrypt_message(encrypted_message, key)

print(encrypted_message)
print(decrypted_message)

위 코드는 "Hello, world!"라는 문자열을 AES 대칭키 암호화를 사용하여 암호화하고, 다시 복호화하는 과정을 수행합니다.

마무리

단방향 및 양방향 암호화는 정보 보안에서 매우 중요한 요소입니다. Python을 사용하면 효과적으로 암호화 작업을 수행할 수 있습니다. 위에서 언급한 예제 코드를 참고하여 암호화에 대한 이해를 높이고, 보안에 중점을 두는 애플리케이션을 개발할 수 있습니다.