2011-06-24 94 views
0

我想将一些加密数据传递给闪存,但我卡在中间的某个地方。Rijndael PHP编码FLASH解码

即时通讯使用Rijndael算法在PHP中的数据进行编码:使用

function encrypt($text){ 
    $key = "53cded30ff7ba54d65b939fd594e3d63"; 
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC); //get vector size on CBC mode 
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); //Creating the vector 
    $cryptedtext = mcrypt_encrypt (MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC, $iv); //Encrypting using MCRYPT_RIJNDAEL_256 algorithm 
    return $cryptedtext; 
} 

和IM的AS3CRYPT库解密闪存中的价值。

问题是,如果我尝试解码闪存中的值或甚至在AS3CRYPT的演示中,它不起作用。

我也试着从base64_encode编码返回的数据,但仍然无法正常工作。

从PHP的输出是一样的东西:flashvar=Á žJcV—µg)7¾1´‘5{Ò<¶Ù$þS„§”

也许我做错了什么事在PHP ...

+0

更可能是您在Flash中使用了错误的解密方法。一个好的加密算法并不能告诉你是否有什么错(例如错误的关键短语),你只是得到垃圾回来,而不是你所期望的。 –

回答

1

PHP不加任何填充,这很可能是必要的。

您必须手动填充它,take a look at this post on PHP.net它解释了实现PKCS7填充兼容性的一种方法。

除此之外,请确保您在“AS3CRYPTO”中设置匹配的机密性模式(CBC)和密码。