Laravel 加密 AES 加密出来的字符超长?怎么和其他语言AES加密出来的对接?

如题,一般的说法, AES 加密出来的结果,如果被加密的串没过16位,加密结果是32位;为什么laravel加密出来的会这么长呢?在实际项目中,同事在安卓端用AES加密出来的,我都无法解出。没看明白laravel框架底层对Crypt类的处理,只是和同事对接起来不方便,又想用框架原生的类和方法,又没有人为我解惑 ?!
已邀请:

小楼

赞同来自:

没人回答吗?

小楼

赞同来自:

谢谢!但还没得到想要的

abel

赞同来自:

同楼主,目前看到
// Illuminate\Encryption\Encrypter 类中

public function encrypt($value)
{
    $iv = Str::randomBytes($this->getIvSize());

    $value = openssl_encrypt(serialize($value), $this->cipher, $this->key, 0, $iv);

    if ($value === false) {
        throw new EncryptException('Could not encrypt the data.');
    }

    // Once we have the encrypted value we will go ahead base64_encode the input
    // vector and create the MAC for the encrypted value so we can verify its
    // authenticity. Then, we'll JSON encode the data in a "payload" array.
    $mac = $this->hash($iv = base64_encode($iv), $value);

    $json = json_encode(compact('iv', 'value', 'mac'));

    if (! is_string($json)) {
        throw new EncryptException('Could not encrypt the data.');
    }

    return base64_encode($json);
}

貌似处理出来的结果是一个结果集,可以打印这个json是试试看。。

要回复问题请先登录注册