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