Python As3Crypto(flex)与PyCrypto-如何使AES工作?

Python As3Crypto(flex)与PyCrypto-如何使AES工作?,python,apache-flex,encryption,pycrypto,as3crypto,Python,Apache Flex,Encryption,Pycrypto,As3crypto,我在Flex中有一个客户端,在Python中有一个服务器,我试图让AES在它们之间工作,但由于某种原因,它不起作用 我的服务器代码: import sys from Crypto.Cipher import AES from binascii import hexlify, unhexlify BS = 16 pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS) unpad = lambda s : s[0:-ord(s[

我在Flex中有一个客户端,在Python中有一个服务器,我试图让AES在它们之间工作,但由于某种原因,它不起作用

我的服务器代码:

import sys
from Crypto.Cipher import AES
from binascii import hexlify, unhexlify

BS = 16
pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
unpad = lambda s : s[0:-ord(s[-1])]

def encrypt(str):
    cipher = AES.new(unhexlify('some 64 byte key here'), AES.MODE_CBC, '16 byte iv')
    hex_str = hexlify(cipher.encrypt(pad(str)))
    return hex_str
我的客户代码:

static public function decrypt(txt:String) : String
{
    var k:String = "some 64 byte key here";
    var pad:IPad = new PKCS5();
    var mode:ICipher = Crypto.getCipher("aes-cbc", Hex.toArray(k), pad);
    pad.setBlockSize(mode.getBlockSize());

    var ivmode:IVMode = mode as IVMode;
    ivmode.IV = Hex.toArray(Hex.fromString("16 byte iv"));

    var data:ByteArray = Hex.toArray(Hex.toString(txt));
    mode.decrypt(data);

    return Hex.fromArray(data);
}
这看起来很简单,但我做错了什么。这是什么


顺便说一句:我得到
RangeError:Error#2006:提供的索引超出了mode.decrypt(数据)的范围

我终于设法让它工作起来了

客户端代码应如下所示:

static public function decrypt(txt:String) : String
{
    var k:String = "some 64 byte key here";
    var pad:IPad = new PKCS5();
    var mode:ICipher = Crypto.getCipher("aes-cbc", Hex.toArray(k), pad);
    pad.setBlockSize(mode.getBlockSize());

    var ivmode:IVMode = mode as IVMode;
    ivmode.IV = Hex.toArray(Hex.fromString("16 byte iv"));

    var data:ByteArray = Hex.toArray(txt);
    mode.decrypt(data);

    return Hex.toString(Hex.fromArray(data));
}

哪一行代码导致了这种异常?谢谢Brian,我已经编辑了我的问题以包含这些信息