안 쓰던 블로그

파이썬 sage, pycrypto 모듈 본문

CTF/Crypto

파이썬 sage, pycrypto 모듈

proqk 2020. 9. 15. 08:33
반응형

sage

sage는 python에서 수학 계산을 위한 프로그래밍 도구이다

 

sage 문서: doc.sagemath.org/html/en/tutorial/

sage의 클라우드 서비스: cocalc.com/

 

설치

sagemath.org/download-linux.html

이곳에서 바이너리 파일을 다운로드 받아서 압축 해제를 한다

tar --lzma -xvf 파일명

그리고 필요한 패키지들을 설치해야 한다

sudo apt-get upgrade && sudo apt-get install build-essential m4 gfortran
sudo apt-get install imagemagick texlive dvipng

설치 후 압축 해제했던 디렉터리에서 make 명령어를 치면 알아서 설치가 된다

 

실행

설치 폴더로 이동 후 sage파일을 실행한다

./sage

pycypto

pycypto는 python암호화 툴킷으로, 보안 해시 함수(SHA256 등)와 다양한 암호 알고리즘(AES, DES, RSA, EIGamal 등)의 모음이다

 

설치

$ pip install pycrypto

오래 전에 개발이 끝난 pycrypto를 대신하여 python 3에서는 pycryptodome를 지원한다

 

$ pip install pycryptodome

두 패키지는 서로를 간섭하므로 두 다 설치하면 안 된다

 

SHA256 모듈 사용 예

>>> from Crypto.Hash import SHA256
>>> hash = SHA256.new()
>>> hash.update('message')
>>> hash.digest()
'\xabS\n\x13\xe4Y\x14\x98+y\xf9\xb7\xe3\xfb\xa9\x94\xcf\xd1\xf3\xfb"\xf7\x1c\xea\x1a\xfb\xf0+F\x0cm\x1d'

 

AES 알고리즘 사용 예

>>> from Crypto.Cipher import AES
>>> obj = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
>>> message = "The answer is no"
>>> ciphertext = obj.encrypt(message)
>>> ciphertext
'\xd6\x83\x8dd!VT\x92\xaa`A\x05\xe0\x9b\x8b\xf1'
>>> obj2 = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
>>> obj2.decrypt(ciphertext)
'The answer is no'
반응형
Comments