我试图解码从服务器返回的 php 中的数据:我知道数据 AES 256 解码并有 PKCS7 填充但无法弄清楚它使用哪种块模式
这是我的php函数:
public function decode($data)
{
//AES decode
$iv = mcrypt_create_iv(GEServerConnection::FBENCRYPT_BLOCK_SIZE, MCRYPT_RAND);
$data = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $this->cryptKey, base64_decode($data), MCRYPT_MODE_ECB, $iv);
//return $data;
$len = strlen($data);
$pad = ord($data[$len - 1]);
return substr($data, 0, - $pad);
}
和编码数据示例
3KD+zb/2u5gGEWvOy0Q0nSQE9pbQZmg27iN6WLiO/Af9YjN8MhHOb8TMa5uETaab
当我用 ECB (MCRYPT_MODE_ECB) 解码时,它只解码数据的开头,其余部分不可读
"Please input yo��̓��g|��*P�Te��� R�B
当使用 CBC (MCRYPT_MODE_CBC) 模式解码时,它开始无法读取
��0�=v������.3ur username and password again"
结果应该是(我在Mac上使用Objective-c中的CommonCryptor得到的):
"Please input your username and password again"
有人知道出了什么问题或如何以正确的方式对其进行解码?