首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >As3Crypto (flex)与PyCrypto -如何使AES工作?

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

Stack Overflow用户
提问于 2014-06-18 16:53:37
回答 1查看 440关注 0票数 0

我在Flex中有一个客户机,在Python中有一个服务器,我试图使AES在它们之间工作,但出于某种原因,它无法工作。

我的服务器代码:

代码语言:javascript
复制
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

我的客户代码:

代码语言:javascript
复制
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: The supplied index is out of bounds (数据)得到的;

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-25 14:32:44

我终于成功地让它开始工作了。

客户端代码应该如下所示:

代码语言:javascript
复制
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));
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24291126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档