我试图解码从服务器返回的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);
}
Run Code Online (Sandbox Code Playgroud)
和编码数据的例子
3KD+zb/2u5gGEWvOy0Q0nSQE9pbQZmg27iN6WLiO/Af9YjN8MhHOb8TMa5uETaab
Run Code Online (Sandbox Code Playgroud)
当我使用ECB(MCRYPT_MODE_ECB)进行解码时,它只解码数据的开头并且其余部分无法读取
"Please input yo??????g|??*P?Te??? R?B
Run Code Online (Sandbox Code Playgroud)
当用CBC(MCRYPT_MODE_CBC)模式解码时,它开始不可读
??0?=v??????.3ur username and password again"
Run Code Online (Sandbox Code Playgroud)
结果应该是(在Objective-c中使用CommonCryptor获得的mac):
"Please input your username and password again"
Run Code Online (Sandbox Code Playgroud)
有人知道什么是错的或如何以正确的方式解码它?