2010-07-13 121 views
1

我真的很努力解密給定的密碼文本在PHP中,我希望你們中的一個將能夠發現我要去哪裏錯了這一個。PHP的AES解密

所以這是我試圖解碼

Wq+J2IlE7Cug1gJNiwy1beIcFggGhn+gZHkTCQ4J/DR3OY45OMs4RXN850xbfAmy 

我知道該字符串的加密與AES/CBC/PKCS5Padding與

2ZqVSHjqn3kMump0rvd8AA== 

的IV,我會向您發送電子郵件按要求提供鑰匙。

public static function aes128cbcDecrypt($key, $encrypted_text, $iv) 
{ 
    $td = mcrypt_module_open(MCRYPT_RIJNDAEL_192, '', MCRYPT_MODE_CBC, ''); 
    mcrypt_generic_init($td, $key, $iv); 
    $decrypted = mdecrypt_generic($td, $encrypted_text); 
    mcrypt_generic_deinit($td); 
    mcrypt_module_close($td); 
    return trim($decrypted); 
} 

當我試圖運行此我得到完整的胡言亂語

ã5‡³/.3p›¤ý°$² —ïÅ»<9 ‘m ê|Ÿ.ÂYº|Šû^w¬¾‚=l「½·F›VársT~ê H�ÿfß]7ñH 

同樣,當我加密已知明文,我得到亂碼的負載,而不是ASCII字符串,它的意思是。

† —4†º¢V�Öæƒ{ Zsöœl ò°Þ 
PegöE&£á=Ǻ܀ 

有沒有人有任何想法,因爲我要去哪裏錯了?

+0

你的函數被調用'aes128cbcDecrypt',但使用的是'MCRYPT_RIJNDAEL_192',不'MCRYPT_RIJNDAEL_128' - 是正確的?你能發佈你的加密功能嗎? – Mike 2010-07-13 11:00:24

+0

感謝您的幫助,Javaguru已經解決了下面的問題。 – 2010-07-13 11:14:49

回答

5

也許一個愚蠢的問題,但應該使用之前IV不是base64解碼?

$realIV = base64_decode($iv); 
+0

你可能是對的,但這並沒有解決問題。 所以插入該行並使用解碼的四個葉是一個錯誤 「的IV參數必須是隻要塊大小」 所以,我把它改成MCRYPT_RIJNDAEL_128來解決這個問題,但還是有亂碼結束。 Ø;xšë4L-üôÙ' C»îÐŽdÒdϨ; Ï0Ü>ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ「 – 2010-07-13 11:02:44

+0

因此Base64編碼/解碼就是答案。 我沒有解碼密鑰,IV,也沒有密文。我想這就是所有的胡言亂語。 感謝您的幫助。 – 2010-07-13 11:14:16