Tôi có một chức năng mã hóa chuỗi bằng AES sử dụng PyCrypto. Khi tôi gọi hàm đó trong các bài kiểm tra đơn vị của tôi, mọi thứ đều hoạt động tốt. Trên môi trường sản xuất, nó cũng hoạt động tốt. Tuy nhiên, khi chức năng được gọi trên máy chủ phát triển GAE, lỗi được đưa ra: "ImportError: không thể nhập blockalgo tên". Tôi đã thử nghiệm nó trên Windows 7 (64 bit) và Mac OS 10.5. Cả hai kết quả trong cùng một lỗi. Tôi đang sử dụng Google App Engine với Python 2.7. Điều gì có thể là vấn đề?PyCrypto trong máy chủ phát triển Google App Engine "ImportError: không thể nhập blockalgo tên"
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
Encryption chức năng:
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
Chỉ cần bất cứ điều gì. Bạn cần hiển thị app.yaml và một số mã. – Chris