프로그래밍/python

[python] 암호화 package (cryptography, pycryptodome)

인썸니아 2023. 9. 19. 22:54

# pycryptodome

과거 pycrypto 라는 파이썬 암호화 패키지가 존재하였으나, 2013년 이후 더이상 업데이트가 되지 않으며, PyCryptoDome 패키지가 이를 계승하여 업데이트가 진행중이라고 한다.

 

pycryptodome

Cryptographic library for Python

pypi.org

# cryptography

파이썬에서 쓸만한 암호 패키지는 위의 pycryptodome과 이 cryptography 두 가지 정도인 듯 하다.

 

cryptography

cryptography is a package which provides cryptographic recipes and primitives to Python developers.

pypi.org

두 패키지 모두 기본적으로 AES 알고리즘을 지원하는데, C++의 cryptopp 처럼 다양한 알고리즘을 지원하진 않는 것 같아 아쉽다.

 

piptrends.com 에서 확인했을때 cryptography 패키지가 좀 더 활발하게 사용되고 있었다.

 

pip-trends

Want to know about a python package or Which Python Python package should you use? pip trends will help you in getting packages downloads stats and their information. Spot trends, pick the winner!

piptrends.com

 

# cryptography 예제

from cryptography.fernet import Fernet

original_text = "this is test"
test_key = Fernet.generate_key()
encrypted_text = Fernet(test_key).encrypt(original_text.encode())
decrypted_text = Fernet(test_key).decrypt(encrypted_text).decode()

print(f"text: {original_text}")
print(f"key: {test_key}")
print(f"encrypted text: {encrypted_text}")
print(f"decrypted_text: {decrypted_text}")

결과

text: this is test
key: b'Kl791XohWpXAdPl6qWv30CPs4h9Xwbt6e-7hxF-Gg4s='
encrypted text: b'gAAAAABlCZ_tOaTjOEhASdxEmdhn6Nhqjmsf48iQEc_AwzVhoJ91bbvQX2mskrngXj-jk98LMkfkj06KT3F-T2T5tiqi1tqmeg=='
decrypted_text: this is test

 

 

반응형