[Python] 파이썬 암호화 pycrypto 설치시 오류 처리 및 대체 방안
대표적인 대칭키 알고리즘으로 DES, AES가 있으며, 이 알고리즘에 대해서 알아보기 위해 테스트를 진행해보려고 하였으나 설치과정에서 부터 오류가 발생하기 시작했습니다.
pycrypto 설치하기
명령프롬프트창(cmd)을 열고 pip install pycrypto명령어를 실행하여 설치합니다.
안타깝게도 저는 pycrypto 설치 오류가 발생했어요.
C:>pip install pycrypto
Collecting pycrypto
Downloading pycrypto-2.6.1.tar.gz (446 kB)
|████████████████████████████████| 446 kB 1.7 MB/s
Using legacy 'setup.py install' for pycrypto, since package 'wheel' is not installed.
Installing collected packages: pycrypto
Running setup.py install for pycrypto ... error
ERROR: Command errored out with exit status 1:
command: 'c:usersilikeappdatalocalprogramspythonpython39python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:Usersili
keAppDataLocalTemppip-install-1a2jfm1mpycrypto_ea3b73191cf74a5a9c9b63935f5d3d7dsetup.py'"'"'; __file__='"'"'C:UsersilikeAppDataLocalT
emppip-install-1a2jfm1mpycrypto_ea3b73191cf74a5a9c9b63935f5d3d7dsetup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().repla
ce('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:UsersilikeAppDataLocalTemppip-record-bm
4nxnqzinstall-record.txt' --single-version-externally-managed --compile --install-headers 'c:usersilikeappdatalocalprogramspythonpython39Includep
ycrypto'
cwd: C:UsersilikeAppDataLocalTemppip-install-1a2jfm1mpycrypto_ea3b73191cf74a5a9c9b63935f5d3d7d
Complete output (153 lines):
running install
running build
running build_py
creating build
creating buildlib.win-amd64-3.9
creating buildlib.win-amd64-3.9Crypto
copying libCryptopct_warnings.py -> buildlib.win-amd64-3.9Crypto
copying libCrypto__init__.py -> buildlib.win-amd64-3.9Crypto
creating buildlib.win-amd64-3.9CryptoHash
copying libCryptoHashhashalgo.py -> buildlib.win-amd64-3.9CryptoHash
copying libCryptoHashHMAC.py -> buildlib.win-amd64-3.9CryptoHash
copying libCryptoHashMD2.py -> buildlib.win-amd64-3.9CryptoHash
copying libCryptoHashMD4.py -> buildlib.win-amd64-3.9CryptoHash
copying libCryptoHashMD5.py -> buildlib.win-amd64-3.9CryptoHash
copying libCryptoHashRIPEMD.py -> buildlib.win-amd64-3.9CryptoHash
copying libCryptoHashSHA.py -> buildlib.win-amd64-3.9CryptoHash
copying libCryptoHashSHA224.py -> buildlib.win-amd64-3.9CryptoHash
copying libCryptoHashSHA256.py -> buildlib.win-amd64-3.9CryptoHash
copying libCryptoHashSHA384.py -> buildlib.win-amd64-3.9CryptoHash
copying libCryptoHashSHA512.py -> buildlib.win-amd64-3.9CryptoHash
copying libCryptoHash__init__.py -> buildlib.win-amd64-3.9CryptoHash
creating buildlib.win-amd64-3.9CryptoCipher
copying libCryptoCipherAES.py -> buildlib.win-amd64-3.9CryptoCipher
copying libCryptoCipherARC2.py -> buildlib.win-amd64-3.9CryptoCipher
copying libCryptoCipherARC4.py -> buildlib.win-amd64-3.9CryptoCipher
copying libCryptoCipherblockalgo.py -> buildlib.win-amd64-3.9CryptoCipher
copying libCryptoCipherBlowfish.py -> buildlib.win-amd64-3.9CryptoCipher
copying libCryptoCipherCAST.py -> buildlib.win-amd64-3.9CryptoCipher
copying libCryptoCipherDES.py -> buildlib.win-amd64-3.9CryptoCipher
copying libCryptoCipherDES3.py -> buildlib.win-amd64-3.9CryptoCipher
copying libCryptoCipherPKCS1_OAEP.py -> buildlib.win-amd64-3.9CryptoCipher
copying libCryptoCipherPKCS1_v1_5.py -> buildlib.win-amd64-3.9CryptoCipher
copying libCryptoCipherXOR.py -> buildlib.win-amd64-3.9CryptoCipher
copying libCryptoCipher__init__.py -> buildlib.win-amd64-3.9CryptoCipher
creating buildlib.win-amd64-3.9CryptoUtil
copying libCryptoUtilasn1.py -> buildlib.win-amd64-3.9CryptoUtil
copying libCryptoUtilCounter.py -> buildlib.win-amd64-3.9CryptoUtil
copying libCryptoUtilnumber.py -> buildlib.win-amd64-3.9CryptoUtil
copying libCryptoUtilpy3compat.py -> buildlib.win-amd64-3.9CryptoUtil
copying libCryptoUtilrandpool.py -> buildlib.win-amd64-3.9CryptoUtil
copying libCryptoUtilRFC1751.py -> buildlib.win-amd64-3.9CryptoUtil
copying libCryptoUtilwinrandom.py -> buildlib.win-amd64-3.9CryptoUtil
copying libCryptoUtil_number_new.py -> buildlib.win-amd64-3.9CryptoUtil
copying libCryptoUtil__init__.py -> buildlib.win-amd64-3.9CryptoUtil
creating buildlib.win-amd64-3.9CryptoRandom
copying libCryptoRandomrandom.py -> buildlib.win-amd64-3.9CryptoRandom
copying libCryptoRandom_UserFriendlyRNG.py -> buildlib.win-amd64-3.9CryptoRandom
copying libCryptoRandom__init__.py -> buildlib.win-amd64-3.9CryptoRandom
creating buildlib.win-amd64-3.9CryptoRandomFortuna
copying libCryptoRandomFortunaFortunaAccumulator.py -> buildlib.win-amd64-3.9CryptoRandomFortuna
copying libCryptoRandomFortunaFortunaGenerator.py -> buildlib.win-amd64-3.9CryptoRandomFortuna
copying libCryptoRandomFortunaSHAd256.py -> buildlib.win-amd64-3.9CryptoRandomFortuna
copying libCryptoRandomFortuna__init__.py -> buildlib.win-amd64-3.9CryptoRandomFortuna
creating buildlib.win-amd64-3.9CryptoRandomOSRNG
copying libCryptoRandomOSRNGfallback.py -> buildlib.win-amd64-3.9CryptoRandomOSRNG
copying libCryptoRandomOSRNGnt.py -> buildlib.win-amd64-3.9CryptoRandomOSRNG
copying libCryptoRandomOSRNGposix.py -> buildlib.win-amd64-3.9CryptoRandomOSRNG
copying libCryptoRandomOSRNGrng_base.py -> buildlib.win-amd64-3.9CryptoRandomOSRNG
copying libCryptoRandomOSRNG__init__.py -> buildlib.win-amd64-3.9CryptoRandomOSRNG
creating buildlib.win-amd64-3.9CryptoSelfTest
copying libCryptoSelfTestst_common.py -> buildlib.win-amd64-3.9CryptoSelfTest
copying libCryptoSelfTest__init__.py -> buildlib.win-amd64-3.9CryptoSelfTest
creating buildlib.win-amd64-3.9CryptoSelfTestCipher
copying libCryptoSelfTestCiphercommon.py -> buildlib.win-amd64-3.9CryptoSelfTestCipher
copying libCryptoSelfTestCiphertest_AES.py -> buildlib.win-amd64-3.9CryptoSelfTestCipher
copying libCryptoSelfTestCiphertest_ARC2.py -> buildlib.win-amd64-3.9CryptoSelfTestCipher
copying libCryptoSelfTestCiphertest_ARC4.py -> buildlib.win-amd64-3.9CryptoSelfTestCipher
copying libCryptoSelfTestCiphertest_Blowfish.py -> buildlib.win-amd64-3.9CryptoSelfTestCipher
copying libCryptoSelfTestCiphertest_CAST.py -> buildlib.win-amd64-3.9CryptoSelfTestCipher
copying libCryptoSelfTestCiphertest_DES.py -> buildlib.win-amd64-3.9CryptoSelfTestCipher
copying libCryptoSelfTestCiphertest_DES3.py -> buildlib.win-amd64-3.9CryptoSelfTestCipher
copying libCryptoSelfTestCiphertest_pkcs1_15.py -> buildlib.win-amd64-3.9CryptoSelfTestCipher
copying libCryptoSelfTestCiphertest_pkcs1_oaep.py -> buildlib.win-amd64-3.9CryptoSelfTestCipher
copying libCryptoSelfTestCiphertest_XOR.py -> buildlib.win-amd64-3.9CryptoSelfTestCipher
copying libCryptoSelfTestCipher__init__.py -> buildlib.win-amd64-3.9CryptoSelfTestCipher
creating buildlib.win-amd64-3.9CryptoSelfTestHash
copying libCryptoSelfTestHashcommon.py -> buildlib.win-amd64-3.9CryptoSelfTestHash
copying libCryptoSelfTestHashtest_HMAC.py -> buildlib.win-amd64-3.9CryptoSelfTestHash
copying libCryptoSelfTestHashtest_MD2.py -> buildlib.win-amd64-3.9CryptoSelfTestHash
copying libCryptoSelfTestHashtest_MD4.py -> buildlib.win-amd64-3.9CryptoSelfTestHash
copying libCryptoSelfTestHashtest_MD5.py -> buildlib.win-amd64-3.9CryptoSelfTestHash
copying libCryptoSelfTestHashtest_RIPEMD.py -> buildlib.win-amd64-3.9CryptoSelfTestHash
copying libCryptoSelfTestHashtest_SHA.py -> buildlib.win-amd64-3.9CryptoSelfTestHash
copying libCryptoSelfTestHashtest_SHA224.py -> buildlib.win-amd64-3.9CryptoSelfTestHash
copying libCryptoSelfTestHashtest_SHA256.py -> buildlib.win-amd64-3.9CryptoSelfTestHash
copying libCryptoSelfTestHashtest_SHA384.py -> buildlib.win-amd64-3.9CryptoSelfTestHash
copying libCryptoSelfTestHashtest_SHA512.py -> buildlib.win-amd64-3.9CryptoSelfTestHash
copying libCryptoSelfTestHash__init__.py -> buildlib.win-amd64-3.9CryptoSelfTestHash
creating buildlib.win-amd64-3.9CryptoSelfTestProtocol
copying libCryptoSelfTestProtocoltest_AllOrNothing.py -> buildlib.win-amd64-3.9CryptoSelfTestProtocol
copying libCryptoSelfTestProtocoltest_chaffing.py -> buildlib.win-amd64-3.9CryptoSelfTestProtocol
copying libCryptoSelfTestProtocoltest_KDF.py -> buildlib.win-amd64-3.9CryptoSelfTestProtocol
copying libCryptoSelfTestProtocoltest_rfc1751.py -> buildlib.win-amd64-3.9CryptoSelfTestProtocol
copying libCryptoSelfTestProtocol__init__.py -> buildlib.win-amd64-3.9CryptoSelfTestProtocol
creating buildlib.win-amd64-3.9CryptoSelfTestPublicKey
copying libCryptoSelfTestPublicKeytest_DSA.py -> buildlib.win-amd64-3.9CryptoSelfTestPublicKey
copying libCryptoSelfTestPublicKeytest_ElGamal.py -> buildlib.win-amd64-3.9CryptoSelfTestPublicKey
copying libCryptoSelfTestPublicKeytest_importKey.py -> buildlib.win-amd64-3.9CryptoSelfTestPublicKey
copying libCryptoSelfTestPublicKeytest_RSA.py -> buildlib.win-amd64-3.9CryptoSelfTestPublicKey
copying libCryptoSelfTestPublicKey__init__.py -> buildlib.win-amd64-3.9CryptoSelfTestPublicKey
creating buildlib.win-amd64-3.9CryptoSelfTestRandom
copying libCryptoSelfTestRandomtest_random.py -> buildlib.win-amd64-3.9CryptoSelfTestRandom
copying libCryptoSelfTestRandomtest_rpoolcompat.py -> buildlib.win-amd64-3.9CryptoSelfTestRandom
copying libCryptoSelfTestRandomtest__UserFriendlyRNG.py -> buildlib.win-amd64-3.9CryptoSelfTestRandom
copying libCryptoSelfTestRandom__init__.py -> buildlib.win-amd64-3.9CryptoSelfTestRandom
creating buildlib.win-amd64-3.9CryptoSelfTestRandomFortuna
copying libCryptoSelfTestRandomFortunatest_FortunaAccumulator.py -> buildlib.win-amd64-3.9CryptoSelfTestRandomFortuna
copying libCryptoSelfTestRandomFortunatest_FortunaGenerator.py -> buildlib.win-amd64-3.9CryptoSelfTestRandomFortuna
copying libCryptoSelfTestRandomFortunatest_SHAd256.py -> buildlib.win-amd64-3.9CryptoSelfTestRandomFortuna
copying libCryptoSelfTestRandomFortuna__init__.py -> buildlib.win-amd64-3.9CryptoSelfTestRandomFortuna
creating buildlib.win-amd64-3.9CryptoSelfTestRandomOSRNG
copying libCryptoSelfTestRandomOSRNGtest_fallback.py -> buildlib.win-amd64-3.9CryptoSelfTestRandomOSRNG
copying libCryptoSelfTestRandomOSRNGtest_generic.py -> buildlib.win-amd64-3.9CryptoSelfTestRandomOSRNG
copying libCryptoSelfTestRandomOSRNGtest_nt.py -> buildlib.win-amd64-3.9CryptoSelfTestRandomOSRNG
copying libCryptoSelfTestRandomOSRNGtest_posix.py -> buildlib.win-amd64-3.9CryptoSelfTestRandomOSRNG
copying libCryptoSelfTestRandomOSRNGtest_winrandom.py -> buildlib.win-amd64-3.9CryptoSelfTestRandomOSRNG
copying libCryptoSelfTestRandomOSRNG__init__.py -> buildlib.win-amd64-3.9CryptoSelfTestRandomOSRNG
creating buildlib.win-amd64-3.9CryptoSelfTestUtil
copying libCryptoSelfTestUtiltest_asn1.py -> buildlib.win-amd64-3.9CryptoSelfTestUtil
copying libCryptoSelfTestUtiltest_Counter.py -> buildlib.win-amd64-3.9CryptoSelfTestUtil
copying libCryptoSelfTestUtiltest_number.py -> buildlib.win-amd64-3.9CryptoSelfTestUtil
copying libCryptoSelfTestUtiltest_winrandom.py -> buildlib.win-amd64-3.9CryptoSelfTestUtil
copying libCryptoSelfTestUtil__init__.py -> buildlib.win-amd64-3.9CryptoSelfTestUtil
creating buildlib.win-amd64-3.9CryptoSelfTestSignature
copying libCryptoSelfTestSignaturetest_pkcs1_15.py -> buildlib.win-amd64-3.9CryptoSelfTestSignature
copying libCryptoSelfTestSignaturetest_pkcs1_pss.py -> buildlib.win-amd64-3.9CryptoSelfTestSignature
copying libCryptoSelfTestSignature__init__.py -> buildlib.win-amd64-3.9CryptoSelfTestSignature
creating buildlib.win-amd64-3.9CryptoProtocol
copying libCryptoProtocolAllOrNothing.py -> buildlib.win-amd64-3.9CryptoProtocol
copying libCryptoProtocolChaffing.py -> buildlib.win-amd64-3.9CryptoProtocol
copying libCryptoProtocolKDF.py -> buildlib.win-amd64-3.9CryptoProtocol
copying libCryptoProtocol__init__.py -> buildlib.win-amd64-3.9CryptoProtocol
creating buildlib.win-amd64-3.9CryptoPublicKey
copying libCryptoPublicKeyDSA.py -> buildlib.win-amd64-3.9CryptoPublicKey
copying libCryptoPublicKeyElGamal.py -> buildlib.win-amd64-3.9CryptoPublicKey
copying libCryptoPublicKeypubkey.py -> buildlib.win-amd64-3.9CryptoPublicKey
copying libCryptoPublicKeyRSA.py -> buildlib.win-amd64-3.9CryptoPublicKey
copying libCryptoPublicKey_DSA.py -> buildlib.win-amd64-3.9CryptoPublicKey
copying libCryptoPublicKey_RSA.py -> buildlib.win-amd64-3.9CryptoPublicKey
copying libCryptoPublicKey_slowmath.py -> buildlib.win-amd64-3.9CryptoPublicKey
copying libCryptoPublicKey__init__.py -> buildlib.win-amd64-3.9CryptoPublicKey
creating buildlib.win-amd64-3.9CryptoSignature
copying libCryptoSignaturePKCS1_PSS.py -> buildlib.win-amd64-3.9CryptoSignature
copying libCryptoSignaturePKCS1_v1_5.py -> buildlib.win-amd64-3.9CryptoSignature
copying libCryptoSignature__init__.py -> buildlib.win-amd64-3.9CryptoSignature
Skipping optional fixer: buffer
Skipping optional fixer: idioms
Skipping optional fixer: set_literal
Skipping optional fixer: ws_comma
running build_ext
warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath.
building 'Crypto.Random.OSRNG.winrandom' extension
error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/
----------------------------------------
ERROR: Command errored out with exit status 1: 'c:usersilikeappdatalocalprogramspythonpython39python.exe' -u -c 'import sys, setuptools, tokenize;
sys.argv[0] = '"'"'C:UsersilikeAppDataLocalTemppip-install-1a2jfm1mpycrypto_ea3b73191cf74a5a9c9b63935f5d3d7dsetup.py'"'"'; __file__='"'"'C:
UsersilikeAppDataLocalTemppip-install-1a2jfm1mpycrypto_ea3b73191cf74a5a9c9b63935f5d3d7dsetup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', op
en)(__file__);code=f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:Usersilike
AppDataLocalTemppip-record-bm4nxnqzinstall-record.txt' --single-version-externally-managed --compile --install-headers 'c:usersilikeappdatalocalp
rogramspythonpython39Includepycrypto' Check the logs for full command output.
WARNING: You are using pip version 20.3.1; however, version 20.3.3 is available.
You should consider upgrading via the 'c:usersilikeappdatalocalprogramspythonpython39python.exe -m pip install --upgrade pip' command.
우선 WARNING 을 먼저 처리했어요. pip 버전을 먼저 업데이트 하였습니다.
C:>python -m pip install --upgrade pip
Requirement already satisfied: pip in c:usersilikeappdatalocalprogramspythonpython39libsite-packages (20.3.1)
Collecting pip
Downloading pip-20.3.3-py2.py3-none-any.whl (1.5 MB)
|████████████████████████████████| 1.5 MB 6.4 MB/s
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 20.3.1
Uninstalling pip-20.3.1:
Successfully uninstalled pip-20.3.1
Successfully installed pip-20.3.3
C:>
다음으로 Using legacy ‘setup.py install’ for pycrypto, since package ‘wheel’ is not installed.
C:>pip install whell
ERROR: Could not find a version that satisfies the requirement whell
ERROR: No matching distribution found for whell
C:>
다음 작업으로 pip install –upgrade setuptools 명령어를 실행하여 업그레이드를 하였습니다.
C:Usersilike>pip install --upgrade setuptools
Requirement already satisfied: setuptools in c:usersilikeappdatalocalprogramspythonpython39libsite-packages (49.2.1)
Collecting setuptools
Downloading setuptools-51.1.1-py3-none-any.whl (2.0 MB)
|████████████████████████████████| 2.0 MB 6.8 MB/s
Installing collected packages: setuptools
Attempting uninstall: setuptools
Found existing installation: setuptools 49.2.1
Uninstalling setuptools-49.2.1:
Successfully uninstalled setuptools-49.2.1
Successfully installed setuptools-51.1.1
C:Usersilike>
그런 다음 오류의 주범인 비주얼 C++ 버전 14를 설치를 설치하기로 하고 오류내용에 포함된 링크를 따라가면 가장 최신의 버전만 노출됩니다.
Crypto.Random.OSRNG.winrandom’ extension error: Microsoft Visual C++ 14.0 is required. Get it with “Build Tools for Visual Studio”:visualstudio.microsoft.com/downloads/
검색을 좀 더 해보니 C++ 14.0 버전은 비주얼 스튜디오 2015 버전에 포함되어 설치가 가능한 모양입니다.
Microsoft Visual C++ 14.0 standalone: Visual C++ Build Tools 2015 (x86, x64, ARM)
This is a standalone version of Visual C++ 14.0 compiler, you don’t need to install Visual Studio 2015.
-
Install Microsoft Visual C++ Build Tools 2015. Check Windows 8.1 SDK and Windows 10 SDK options.
-
The setuptools Python package version must be at least 24.0.
Visual C++ Build Tools 2015 was upgraded by Microsoft to Build Tools for Visual Studio 2017. See the previous paragraph to install it.
Microsoft Visual C++ 14.0 with Visual Studio 2015 (x86, x64, ARM)
Visual Studio 2015 contains Visual C++ 14.0 compiler. Distutils will automatically detect the compiler and use it.
Visual Studio 2015 was upgraded by Microsoft to Visual Studio 2017. See the previous paragraph to install it.
Build Tools 2015를 검색 끝에 어렵게 찾았습니다. 아래 경로에서 다운 받은 후 BuildTools_Full.exe를 클릭하여 설치합니다.
www.microsoft.com/en-us/download/details.aspx?id=48159
설치를 완료 후 pip install pycrypto명령어를 실행하여 설치합니다. 그러나 저는 여전히 오류가 발생합니다.
위와 같은 방법으로 시도했으나 해결이 안되신 분들은 아래 내용을 참고하세요.
다른 방법으로 시도하였으나 역시 설치 오류가 재현됩니다.
C:Usersilike>pip uninstall pycrypto
WARNING: Skipping pycrypto as it is not installed.
C:Usersilike>easy_install pycrypto
WARNING: The easy_install command is deprecated and will be removed in a future version.
Searching for pycrypto
Reading https://pypi.org/simple/pycrypto/
Downloading https://files.pythonhosted.org/packages/60/db/645aa9af249f059cc3a368b118de33889219e0362141e75d4eaf6f80f163/pycrypto-2.6.1.tar.gz#sha256=f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c
Best match: pycrypto 2.6.1
Processing pycrypto-2.6.1.tar.gz
Writing C:UsersilikeAppDataLocalTempeasy_install-0q3aj0idpycrypto-2.6.1setup.cfg
Running pycrypto-2.6.1setup.py -q bdist_egg --dist-dir C:UsersilikeAppDataLocalTempeasy_install-0q3aj0idpycrypto-2.6.1egg-dist-tmp-42willro
warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath.
error: Setup script exited with error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
C:Usersilike>
모듈을 클릭하면 찾아 들어가는데 컴파일 할때 모듈을 못 찾고 있네요. ModuleNotFoundError: No module named ‘Crypto’ 오류가 발생하네요.
검색에 검색을 하게 되었고, crypto 와 pycrypto를 사용하지 말라고 합니다. 취약점이 있는데 업데이트를 해주지 않고 있다는 것 같아요. 그러면서 파이썬3에서는 pycryptodome를 사용하라고 합니다.
pip install pycryptodome를 실행하여 설치하였습니다. 정상적으로 잘 설치 되었네요.
C:Usersilike> pip install pycryptodome
Collecting pycryptodome
Downloading pycryptodome-3.9.9-cp39-cp39-win_amd64.whl (14.1 MB)
|████████████████████████████████| 14.1 MB 6.4 MB/s
Installing collected packages: pycryptodome
Successfully installed pycryptodome-3.9.9
[REFERENCE]
wiki.python.org/moin/WindowsCompilers
stackoverflow.com/questions/51824628/modulenotfounderror-no-module-named-crypto-error/51824838
stackoverflow.com/questions/19623267/importerror-no-module-named-crypto-cipher
pycryptodome.readthedocs.io/en/latest/
pypi.org/project/pycryptodome/