php-base64编码的数据在json_encode之后丢失

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php-base64编码的数据在json_encode之后丢失相关的知识,希望对你有一定的参考价值。

我使用以下代码为给定字符串生成加密字符串。

class MY_class{
    public static function cryption($string){
        $output = base64_encode(openssl_encrypt($string, $cipher_method, $key, 0, $iv));
        $output = $iv . $output;
        return $output;
    }
}

使用此代码,我生成了模型对象的id的加密id,并替换了原始id。

$Model_object = Model_class::find(1);
$Model_object->id = MY_class::cryption($Model_object->id);
echo json_encode($Model_object);

对于给定的实例print_r()$Model_object更换原始id与加密id后给我以下结果。

[index] => Array
    (
        [id] => 4df73f34cUYxVmVLWlFUU2M9
    )

但是json_encode()只输出加密id的第一个十进制数字。

{"id":4}

如果有人能解释为什么会这样,以及如何克服这个问题,我真的很感激。

附:我已经用Google搜索了这个问题并在Stack Overflow中进行了搜索。所以,请不要在评论中提及它。

答案

正如@LSerni所说,我隐含地将加密的id作为字符串分配给整数属性$Model_object->id

所以我创建了一个新的动态属性$Model_object->encrypted_id并为其分配了加密的id并在另一侧调用了该属性。它就像一个魅力。

非常感谢@LSerni对您解决问题的见解。

以上是关于php-base64编码的数据在json_encode之后丢失的主要内容,如果未能解决你的问题,请参考以下文章

Base64编码学习

为啥“仅”使用 Base64 来编码二进制数据?

python使用base64编码解码数据

Base64编码

如果数据是 450KB base64 编码,那么文件大小是多少?

Base64编码的长度问题-文件越大Base64的值越长