1

我真的很难用 PHP 解密给定的密文,我希望你们中的一个人能够发现我在哪里出错了。

所以这是我要解码的字符串

Wq+J2IlE7Cug1gJNiwy1beIcFggGhn+gZHkTCQ4J/DR3OY45OMs4RXN850xbfAmy

我知道它使用 AES/CBC/PKCS5Padding 加密,IV 为

2ZqVSHjqn3kMump0rvd8AA==

我会根据您的要求通过电子邮件将密钥发送给您。

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&£á=Ǻ܀

你们中有人知道我哪里出错了吗?

4

1 回答 1

5

也许是一个愚蠢的问题,但是在使用 IV 之前不应该对其进行 base64 解码吗?

$realIV = base64_decode($iv);
于 2010-07-13T10:51:07.123 回答