SeouliteLab

파이썬으로 RSA 암호화 구현하기: PyCryptodome 라이브러리 활용 방법 본문

카테고리 없음

파이썬으로 RSA 암호화 구현하기: PyCryptodome 라이브러리 활용 방법

Seoulite Lab 2024. 4. 19. 08:55

RSA는 공개키 암호화 알고리즘 중 가장 널리 사용되는 알고리즘으로, 데이터를 안전하게 전송하고 서명하는 데에 활용됩니다. 파이썬에서 RSA 암호화를 구현하고 사용하기 위해서는 PyCryptodome 라이브러리를 사용할 수 있습니다. 이 블로그에서는 PyCryptodome를 사용하여 RSA 암호화를 다루는 방법에 대해 알아보겠습니다.

1. 키 생성하기

RSA 암호화를 위해 공개키와 개인키를 생성하는 방법을 살펴보겠습니다.

from Crypto.PublicKey import RSA

# 키 생성
key = RSA.generate(2048)

# 공개키와 개인키 추출
public_key = key.publickey().export_key()
private_key = key.export_key()

# 키 출력
print("공개키:", public_key.decode())
print("개인키:", private_key.decode())

위 코드는 RSA 키 쌍을 생성하고, 생성된 키를 공개키와 개인키로 추출하여 출력합니다.

2. 데이터 암호화 및 복호화

RSA를 사용하여 데이터를 암호화하고 복호화하는 과정을 살펴보겠습니다.

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP

# 공개키로 암호화
public_key = RSA.import_key(public_key)
cipher = PKCS1_OAEP.new(public_key)
ciphertext = cipher.encrypt(b'Hello RSA')
print("암호화된 데이터:", ciphertext)

# 개인키로 복호화
private_key = RSA.import_key(private_key)
cipher = PKCS1_OAEP.new(private_key)
plaintext = cipher.decrypt(ciphertext)
print("복호화된 데이터:", plaintext.decode())

위 코드는 공개키로 데이터를 암호화하고, 개인키로 암호화된 데이터를 복호화하여 원본 데이터를 얻는 과정을 보여줍니다.

3. 서명 및 검증

RSA를 사용하여 데이터에 서명하고 해당 서명을 검증하는 예제를 살펴보겠습니다.

from Crypto.Signature import pkcs1_15
from Crypto.Hash import SHA256

# 데이터 서명
private_key = RSA.import_key(private_key)
h = SHA256.new(b'Hello RSA')
signature = pkcs1_15.new(private_key).sign(h)
print("서명:", signature)

# 서명 검증
public_key = RSA.import_key(public_key)
h = SHA256.new(b'Hello RSA')
try:
    pkcs1_15.new(public_key).verify(h, signature)
    print("서명 검증 성공")
except (ValueError, TypeError):
    print("서명 검증 실패")

위 코드는 데이터를 SHA256으로 해시하고 해당 해시에 개인키로 서명한 후, 해당 서명을 공개키로 검증하는 과정을 보여줍니다.

RSA 암호화를 파이썬에서 구현하기 위해 PyCryptodome 라이브러리를 사용할 수 있습니다. 이를 통해 데이터의 안전한 전송 및 보호가 가능합니다.