从as3crypto在php中解密AES-CBC

从as3crypto在php中解密AES-CBC,php,encryption,mcrypt,as3crypto,Php,Encryption,Mcrypt,As3crypto,我发现有很多关于这个的讨论,但似乎没有一个能让这个对我起作用,所以任何帮助都是非常感谢的。 我使用as3crypto库在flash中对一些文本进行编码,然后将加密文本发送到一个php脚本,在那里我需要对其进行解码。加密和解密在flash内部工作正常,但我无法用php对其进行解密 这是我在Flash中的代码 private static const KEY:String = "AxiKzCRH5arSABesX9bH2lTSxYmAGEEz"; private static function e

我发现有很多关于这个的讨论,但似乎没有一个能让这个对我起作用,所以任何帮助都是非常感谢的。 我使用as3crypto库在flash中对一些文本进行编码,然后将加密文本发送到一个php脚本,在那里我需要对其进行解码。加密和解密在flash内部工作正常,但我无法用php对其进行解密

这是我在Flash中的代码

private static const KEY:String = "AxiKzCRH5arSABesX9bH2lTSxYmAGEEz";

private static function encrypt(input:String, key:String, algorithm:String = "aes-cbc", padding:String = "None"):String {
    var kdata:ByteArray = Base64.decodeToByteArray(key);
    var data:ByteArray = Hex.toArray(Hex.fromString(input));
    var pad:IPad = padding == "pkcs5" ? new PKCS5 : new NullPad;
    var mode:ICipher = Crypto.getCipher("simple-" + algorithm, kdata, pad);
    pad.setBlockSize(mode.getBlockSize());
    mode.encrypt(data);

    return Hex.fromArray(data);
}

var text-to-send-to-php:String = encrypt('test text', KEY);
这是我到目前为止用php编写的代码,它不起作用

<?php
$key = 'AxiKzCRH5arSABesX9bH2lTSxYmAGEEz';
$encrypted_text = the-text-i-get-from-flash;

$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');

$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_URANDOM);
mcrypt_generic_init($td, $key, $iv);

$s = mdecrypt_generic($td, $encrypted_text);
echo 'decrypted = ' . $s;

mcrypt_generic_deinit($td);
mcrypt_module_close($td);
?>

所以我认为这是编码/解码的问题,但也是IV的问题。 下面是php的最终工作代码

<?php
$key = base64_decode('AxiKzCRH5arSABesX9bH2lTSxYmAGEEz');
$encrypted_text = the-text-i-get-from-flash;
$encrypted_text = hex2bin($encrypted_text);

$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
$blocksize = mcrypt_enc_get_block_size($td);

$iv = substr($encrypted_text, 0, $blocksize);
$encrypted_text = substr($encrypted_text, $blocksize);

mcrypt_generic_init($td, $key, $iv);

$username = mdecrypt_generic($td, $encrypted_text);

mcrypt_generic_deinit($td);
mcrypt_module_close($td);
?>