小编Har*_*rry的帖子

具有PKCS7填充编码数据的AES 256具有一半ECB和一半CBC块

我试图解码从服务器返回的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)

有人知道什么是错的或如何以正确的方式解码它?

php aes objective-c mcrypt commoncrypto

4
推荐指数
1
解决办法
608
查看次数

标签 统计

aes ×1

commoncrypto ×1

mcrypt ×1

objective-c ×1

php ×1