CentOS 6에서 pip Crypto 설치하여 AES-256 암/복호화 하기

Jeongkuk Seo
sjk5766
Published in
6 min readJan 9, 2019

최근에 Python 에서 AES 암호화를 지원해야 하는 일이 있었습니다. 일반적으로 Crypto 모듈을 import 해서 쓰는데, 이 모듈을 쓰려면 pip로 pycrypto 모듈을 설치해야 합니다.

저에게 최종적으로 필요했던 건, 패키지 서버에서 Crypto를 설치하고, 패키지를 만듭니다. 패키지를 테스트 서버로 옮겨서 실행했을 때 문제없이 Crypto 모듈을 쓰도록 하는 것이였습니다.

그럼 pip 설치부터 차근차근 정리하겠습니다.

Crypto 모듈 설치를 위해 pip 설치

우선, 외부 패키지 설치할 때 필요한 setuptools 와 pip 를 설치합니다.

// pip 설치
wget https://pypi.python.org/packages/source/p/pip/pip-8.1.1.tar.gz
tar -zxvf pip-8.1.1.tar.gz
cd pip-8.1.1
python setup.py install
// setuptools 설치
wget https://pypi.python.org/packages/source/s/setuptools/setuptools-20.9.0.tar.gz
tar -zxvf setuptools-20.9.0.tar.gz
cd setuptools-20.9.0
python setup.py install

정상적으로 pip가 설치되었다면 pip를 쉘에서 입력했을 때 다음과 같이 나옵니다.

설치한 pip로 Crypto 모듈 설치

pip로 Crypto를 설치하기 위해 다음과 같이 입력합니다.

pip install pycrypto

저는 설치과정에서 다음과 같이 에러가 발생했습니다. 혹시 gcc가 설치되어 있지 않아도 에러가 납니다.

warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath. // 첫 번째 에러yum install gmp-devel   // 첫 번째 에러 해결방법src/_fastmath.c:31:20: fatal error: Python.h: 그런 파일이나 디렉터리가 없습니다   // 두 번째 에러yum install python-devel   // 두 번째 에러 해결방법

에러 없이 정상적으로 설치되었다면 확인을 위해 다음과 같이 확인합니다.

python을 실행하고 import Crypto를 했을 때 에러없이 넘어가면 정상적으로 설치 된 것을 알 수 있습니다.

설치한 Crypto 모듈을 다른 서버에서 설치 없이 사용하기

우선 pip로 설치 된 모듈의 경로를 알아보기 위해 다음과 같이 명령어를 입력합니다.

python -m site

입력하면 제 경우, 아래와 같은 결과가 나옵니다.

Crypto 모듈을 찾아보면 pip로 설치된 Crypto 모듈의 위치를 알 수 있습니다.

find / -name Crypto
/usr/lib64/python2.6/site-packages/Crypto

이 Crypto 모듈을 통째로 압축하고 scp 명령어로 다른 서버로 전송합니다.

// Crypto 디렉토리를 압축
[root@localhost ~]# cd /usr/lib64/python2.6/site-packages
[root@localhost site-packages]# tar -zcvf Crypto.tar.gz Crypto/
// 테스트 서버로 압축한 파일을 전송
[root@localhost site-packages]# scp Crypto.tar.gz root@192.168.44.129:/usr/lib64/python2.6/site-packages/

이제 129번으로 접속해 압축을 풀기 전과 압축을 푼 후에 테스트를 해보겠습니다.

// 1. 현재 129번에는 Crypto 모듈이 없어서 에러가 발생
[root@localhost ~]# cd /usr/lib64/python2.6/site-packages/
[root@localhost site-packages]# python
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import Crypto
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named Crypto
>>>
// 2. 128번에서 전달한 압축파일을 동일경로에서 풀어준다.
[root@localhost site-packages]# tar -zxvf Crypto.tar.gz
// 3. 129에서 정상적으로 Crypto 모듈을 사용함
[root@localhost site-packages]# python
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import Crypto
>>>

제 경우 128번에서 패키지를 만들 때, 패키지에 Crypto 모듈과 설치 시점에 Crypto 모듈을 pip가 설치된 경로로 배치하였고 테스트 서버에서는 정상적으로 Crypto 모듈을 사용해 암호화를 지원할 수 있었습니다.

--

--