2011-06-24 122 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)和密碼。