Crypto、PyCrypto、PyCryptodome傻傻分不清楚
本文完整阅读约需 5 分钟,如时间较长请考虑收藏后慢慢阅读~
在clone他人Python工程的时候,经常会遇到
from Crypto.Cipher import AES
类似的依赖,也经常因为缺少了Crypto
这个库造成代码无法执行。可简单的pip install crypto
却并不能解决问题,这是为什么呢?
0x01
相信对于任何熟悉Python的人来说,遇到缺失Crypto
库的情况,直觉操作就是在shell中执行以下命令:
pip install crypto
然而,在安装了该库之后,运行却依然提示没有该模块。于是我跑到site-package目录下一看,没看到Crypto
目录,倒是看到了crypto
目录。
我猜想是大小写不匹配导致Python找不到库,于是将crypto
重命名为Crypto
,本以为可以正常运行,可Python还是报错:找不到Crypto.Cipher
。
看来这一方法并不正确,问题并非出在大小写上。
0x02
我找到pypi仓库的crypto
库描述,发现它指向的是https://github.com/chrissimpkins/crypto
这一GPG加解密库,这显然不对。
于是我继续搜索,找到了PyCrypto
库,这次代码倒是正常运行了,可我一看更新时间,傻了眼:Last released: Oct 18, 2013
。
0x03
如果是加密相关的通用库,不应该存在数年不更新的情况。我不禁联想到了PIL和Pillow库的关系:是不是因为PyCrypto库被其他的兼容库所替代了呢?
我继续搜索,终于找到了PyCryptodome
库。看着上面的Last released: Jan 20, 2019
(本文撰写于2019年3月),我大舒一口气:这就是我要的Crypto
!
执行pip install pycryptodome
安装相关依赖,再次执行程序,这次正常加载了!That’s It!
0x04
一番折腾之后,我终于理清了crypto
、PyCrypto
、PyCryptodome
这三个库的关系:
– crypto
是与我们需求风马牛不相及的GPG加解密库,该库已于2016年停更,且python-gnupg
库才是最主流的GPG加解密库。
– PyCrypto
是Python『前』主流加解密库,但已停更。
– PyCryptodome
是当前最主流的Python加解密库,如果遇到代码中有import Crypto
等字样,就需要安装这个库。
0x05
总而言之,遇到缺失Crypto
库的情况,我们只需要做一件事:
pip install pycryptodome
问题即可迎刃而解!
thanks,helpful posts~