我有一个使用 PyCrypto 使用 AES 加密字符串的函数。当我在单元测试中调用该函数时,一切正常。在生产环境中,它也运行得很好。但是,在GAE开发服务器上调用该函数时,会抛出错误:“ImportError:无法导入名称blockalgo”。我在 Windows 7(64 位)和 Mac OS 10.5 上进行了测试。两者都导致了相同的错误。我正在使用 Google App Engine 和 Python 2.7。可能是什么问题呢?
app.yaml
application: xxx
version: 6
runtime: python27
api_version: 1
threadsafe: true
libraries:
- name: django
version: "1.2"
- name: webapp2
version: "2.3"
- name: jinja2
version: "2.6"
- name: pycrypto
version: "2.3"
- name: PIL
version: "1.1.7"
builtins:
- appstats: on
- remote_api: on
inbound_services:
- mail
- warmup
加密功能:
def encrypt(plaintext):
from Crypto.Cipher import AES
import hashlib
password = 'xxx'
key = hashlib.sha256(password).digest()
mode = AES.MODE_ECB
encryptor = AES.new(key, mode)
BLOCK_SIZE = 16
PADDING = '{'
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING
EncodeAES = lambda c, s: b58encode(c.encrypt(pad(s)))
encrypted = EncodeAES(encryptor, plaintext)
if len(encrypted) < 22:
for i in range (len(encrypted), 22):
encrypted += "_"
return encrypted
确保本地系统上安装的 PyCrypto 版本与 app.yaml 中指定的版本相同。将软件包升级到最新版本之前请三思。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)