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

问题描述 投票:0回答:1

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

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中进行了搜索。所以,请不要在评论中提及它。

php json base64 php-openssl
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.