2012-06-28 27 views
5

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 
+1

Chỉ cần bất cứ điều gì. Bạn cần hiển thị app.yaml và một số mã. – Chris

Trả lời

5

Hãy chắc chắn rằng phiên bản của PyCrypto được cài đặt trên hệ thống địa phương của bạn là tương tự như các phiên bản được quy định tại app.yaml. Suy nghĩ kỹ trước khi bạn nâng cấp gói lên phiên bản mới nhất.

+0

Ngẫu nhiên, người ta có thể tải xuống v2.3 tại đây: https://github.com/dlitz/pycrypto/tags –

+0

Làm việc tuyệt vời cho tôi nhưng tôi đã ngạc nhiên: không giống như mọi gói GAE libs khác có hỗ trợ, cái này bạn phải cài đặt bản thân bạn. Lý do pháp lý? – ckhan

Các vấn đề liên quan