프로그래밍

[python] pycrypto를 이용한 DES-ECB 암호화

채윤아빠 2020. 6. 11. 15:44
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'

참고자료