5

PyCryptoを使用してAESで文字列を暗号化する機能があります。単体テストでその関数を呼び出すと、すべてが正常に機能します。実稼働環境では、それも正常に機能します。ただし、GAE開発サーバーで関数を呼び出すと、「ImportError:名前blockalgoをインポートできません」というエラーがスローされます。Windows 7(64ビット)とMacOS10.5でテストしました。どちらも同じエラーになりました。Python2.7でGoogleAppEngineを使用しています。何が問題なのですか?

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
4

1 に答える 1

5

ローカル システムにインストールされている PyCrypto のバージョンが、app.yaml で指定されているバージョンと同じであることを確認してください。パッケージを最新バージョンにアップグレードする前によく考えてください。

于 2012-06-29T16:44:01.790 に答える