Notice
Recent Posts
Recent Comments
Link
SeouliteLab
파이썬으로 RSA 암호화 구현하기: PyCryptodome 라이브러리 활용 방법 본문
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 라이브러리를 사용할 수 있습니다. 이를 통해 데이터의 안전한 전송 및 보호가 가능합니다.