728x90
반응형
개요
대칭키 암호화 알고리즘인 DES를 지원하는 라이브러리가 여러 가지가 있지만, 다양한 암호화 알고리즘을 지원하는 pycrypto 라이브러리를 이용하여 암/복호화하는 방법을 소개합니다.
pycrypto 라이브러리를 이용하기 위해서는 다음과 같은 명령으로 pycrypto 라이브러리를 설치해야 합니다.
pip install pycrypto
DES ECB 모드 암호화 예
DES.MODE_ECB 에서는 IV가 의미가 없습니다.
from Crypto.Cipher import DES
import binascii
key = "HUNATURE"
cipher = DES.new(key, DES.MODE_ECB)
plain_string = b'01343ca100010001'
plain_data = binascii.unhexlify(plain_string)
org_encrypted_data = cipher.encrypt(plain_data)
org_encrypted_string = binascii.hexlify(org_encrypted_data)
print("original encrypted string = %s" % (org_encrypted_string))
encrypted_string = "878d710ae988fbfb"
# python 2.x
# encrypted_data = encrypted_string.decode("hex")
# python 3.x
encrypted_data = binascii.unhexlify(encrypted_string)
decrypted_data = cipher.decrypt(encrypted_data)
decrypted_string = binascii.hexlify(decrypted_data)
print("decrypted string = %s" % (decrypted_string))
DES 알고리즘을 이용할 때, 암호키 (key)는 8byte이어야 합니다.
위와 같은 예제를 작성하여 실행하면 다음과 같은 결과를 반환합니다.
original encrypted string = b'878d710ae988fbfb'
decrypted string = b'01343ca100010001'
참고자료
- "Python Crypto.Cipher.DES.MODE_ECB() Examples":https://www.programcreek.com/python/example/101304/Crypto.Cipher.DES.MODE_ECB
- "Convert hex string to int in Python":https://stackoverflow.com/questions/209513 ; int("deadbeef", 16)
'프로그래밍' 카테고리의 다른 글
[python] AttributeError module has no attribute (0) | 2020.06.17 |
---|---|
[python] pypreprocessor 설치하기 (2) | 2020.06.16 |
[python] pycrypto 설치시 "intmax_t" 오류 발생 대처 방법 (0) | 2020.06.10 |
git 활용법 모음 (0) | 2019.06.27 |
CentOS에서 Git 저장소 생성하기 (How to create git repository in CentOS) (0) | 2018.12.25 |