我正在尝试使用PyCrypto构建两个函数,它们接受两个参数:消息和密钥,然后加密/解密消息.
我在网上发现了几个链接来帮助我,但每个链接都有缺陷:
在codekoala上的这个使用os.urandom,PyCrypto不鼓励这样做.
而且,我给函数的关键不能保证具有预期的确切长度.我该怎么做才能实现这一目标?
此外,还有几种模式,建议使用哪种模式?我不知道该用什么:/
最后,究竟是什么?我可以为加密和解密提供不同的IV,还是会以不同的结果返回?
这是我到目前为止所做的:
from Crypto import Random
from Crypto.Cipher import AES
import base64
BLOCK_SIZE=32
def encrypt(message, passphrase):
# passphrase MUST be 16, 24 or 32 bytes long, how can I do that ?
IV = Random.new().read(BLOCK_SIZE)
aes = AES.new(passphrase, AES.MODE_CFB, IV)
return base64.b64encode(aes.encrypt(message))
def decrypt(encrypted, passphrase):
IV = Random.new().read(BLOCK_SIZE)
aes = AES.new(passphrase, AES.MODE_CFB, IV)
return aes.decrypt(base64.b64decode(encrypted))
Run Code Online (Sandbox Code Playgroud) 我已经阅读了所有其他谷歌来源和SO线程,没有任何工作.
Python 2.7.3 32bit安装上Windows 7 64bit.下载,解压缩,然后尝试安装PyCrypto结果"Unable to find vcvarsall.bat".
所以我安装MinGW并在安装行上将其作为首选编译器.但后来我得到了错误"RuntimeError: chmod error".
我怎么在世界上绕过这个?我尝试过使用pip,它给出了相同的结果.我找到了一个预先构建的PyCrypto 2.3二进制文件并安装了它,但它在系统上找不到(不工作).
有任何想法吗?
当我尝试运行app.py(Python 3.3,PyCrypto 2.6)时,我的virtualenv不断返回上面列出的错误.我的导入声明是公正的from Crypto.Cipher import AES.我寻找重复,你可能会说有一些,但我尝试了解决方案(虽然大多数甚至不是解决方案),没有任何工作.
您可以在下面看到PyCrypto的文件:

看过其他类似的线程后,我仍然无法运行pycrypto.
我正试图让它在我的Ubuntu笔记本电脑上工作 - 但我无法在我的Windows PC上管理它.
我下载了pycrypto-2.6,将其解压缩并运行
python setup.py build
Run Code Online (Sandbox Code Playgroud)
但后来发生了这件事
warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath.
building 'Crypto.Hash._MD2' extension
gcc -pthread -fno-strict-aliasing -fwrapv -Wall -Wstrict-prototypes -fPIC -std=c99 -O3 - fomit-frame-pointer -Isrc/ -I/usr/include/python2.7 -c src/MD2.c -o build/temp.linux-i686-?2.7/src/MD2.o
src/MD2.c:31:20: fatal error: Python.h: No such file or directory
compilation terminated.
error: command 'gcc' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)
非常感谢任何帮助.
OpenSSL为AES加密提供了一种流行的(但不安全 - 见下文!)命令行界面:
openssl aes-256-cbc -salt -in filename -out filename.enc
Run Code Online (Sandbox Code Playgroud)
Python以PyCrypto包的形式支持AES,但它只提供工具.如何使用Python/PyCrypto解密使用OpenSSL加密的文件?
此问题过去也涉及使用相同方案的Python加密.我已经删除了那部分以阻止任何人使用它.不要以这种方式加密任何数据,因为它不符合今天的标准.你应该只使用解密,除了后向兼容性之外没有其他原因,即当你别无选择时.想要加密?如果可能的话,使用NaCl/libsodium.
似乎有很多人遇到过类似的问题,然而,经过多次搜索,我找不到适用于我的特定架构的解决方案.我正在尝试安装Pycrypto(作为Fabric的子公司)无济于事.
我正在通过Homebrew运行Mac 10.8.2,python 2.7.3,以及使用pip或easy_install运行XCode 4.6(我已经尝试过两者).据我所知,问题可能与我的XCode版本有关,也可能是因为我的库.已安装XCode的命令行工具,我已尝试放入setenv ARCHFLAGS "-arch i386 -arch x86_64"我的.cshrc文件.我也试过了ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer /Developer.至于图书馆,我尝试通过它们进行链接ln -s /usr/local/lib/libgmp.dylib /usr/lib/libgmp.dylib- 但这也没有用.
无论我尝试什么角度,错误总是相同的(见下文).任何和所有的帮助将不胜感激.
/usr/local/share/python% pip install pycrypto
Downloading/unpacking pycrypto
Running setup.py egg_info for package pycrypto
Installing collected packages: pycrypto
Running setup.py install for pycrypto
building 'Crypto.PublicKey._fastmath' extension
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -fno-strict-aliasing -fno-common -dynamic -arch i386 -arch x86_64 -pipe -mmacosx-version-min=10.8 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -Wno-unused-value -Wno-empty-body -Qunused-arguments -fwrapv -Wall -Wstrict-prototypes -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/usr/include/ -I/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/_fastmath.c -o build/temp.macosx-10.8-intel-2.7/src/_fastmath.o
src/_fastmath.c:36:11: fatal error: 'gmp.h' …Run Code Online (Sandbox Code Playgroud) pip install pycrypto 使用python3.5.2可以正常工作,但是由于python3.6而失败并出现以下错误:
inttypes.h(26):错误C2061:语法错误:标识符'intmax_t'
我在我的python代码中使用Paramiko(对于sftp).除了我每次导入或调用paramiko函数时,一切正常.此警告将显示:
C:\Python26\lib\site-packages\Crypto\Util\randpool.py:40: RandomPool_Deprecation
Warning: This application uses RandomPool, which is BROKEN in older releases. S
ee http://www.pycrypto.org/randpool-broken
RandomPool_DeprecationWarning)
Run Code Online (Sandbox Code Playgroud)
我知道这与Paramiko正在使用PyCrypto的一些不推荐的功能这一事实有关.
我的问题是,有没有办法以编程方式抑制此警告?我试过这个:
warnings.filterwarnings(action='ignore', \
category=DeprecationWarning, module='paramiko')
Run Code Online (Sandbox Code Playgroud)
甚至这个:
warnings.filterwarnings(action='ignore', \
category=DeprecationWarning, module='randpool')
Run Code Online (Sandbox Code Playgroud)
在'import paramiko'语句之前和paramiko特定函数调用之前,但没有任何作用.无论如何,这个警告都会出现.如果有帮助,这是第三方库中打印警告的代码:
在randpool.py中:
from Crypto.pct_warnings import RandomPool_DeprecationWarning
import Crypto.Random
import warnings
class RandomPool:
"""Deprecated. Use Random.new() instead.
See http://www.pycrypto.org/randpool-broken
"""
def __init__(self, numbytes = 160, cipher=None, hash=None, file=None):
warnings.warn("This application uses RandomPool, which is BROKEN in older releases. See http://www.pycrypto.org/randpool-broken",
RandomPool_DeprecationWarning)
Run Code Online (Sandbox Code Playgroud)
如果您知道解决方法,请帮我关闭此警告.
我python setup.py install在Windows XP控制台中运行,它报告如下:
running install
running build
running build_py
running build_ext
warning: GMP library not found; Not building Crypto.PublicKey._fastmath.
building 'Crypto.Random.OSRNG.winrandom' extension
error: None
Run Code Online (Sandbox Code Playgroud)
当我尝试运行脚本时import Crypto.Cipher.AES,它不起作用,说:
ImportError: cannot import name AES
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
我试图通过pip在OS X上安装pycrypto(版本2.3).当编译器尝试编译MD2.c时,我收到"Broken pipe"错误.使用easy_install时出现非常类似的错误.
这是我得到的错误:
bash-3.2$
bash-3.2$ sudo pip install pycrypto
Password:
Downloading/unpacking pycrypto
Running setup.py egg_info for package pycrypto
Installing collected packages: pycrypto
Running setup.py install for pycrypto
warning: GMP library not found; Not building Crypto.PublicKey._fastmath.
building 'Crypto.Hash.MD2' extension
gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -fwrapv -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch ppc -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c src/MD2.c -o build/temp.macosx-10.6-universal-2.6/src/MD2.o
/usr/libexec/gcc/powerpc-apple-darwin10/4.2.1/as: assembler (/usr/bin/../libexec/gcc/darwin/ppc/as or /usr/bin/../local/libexec/gcc/darwin/ppc/as) for architecture ppc not installed
Installed assemblers are:
/usr/bin/../libexec/gcc/darwin/x86_64/as for architecture x86_64 …Run Code Online (Sandbox Code Playgroud) pycrypto ×10
python ×9
windows ×3
encryption ×2
pip ×2
aes ×1
easy-install ×1
gcc ×1
gmp ×1
macos ×1
openssl ×1
padding ×1
paramiko ×1
python-2.7 ×1
python-3.6 ×1
virtualenv ×1