2017-12-19 36 views
0

次のコードを使用して、指定された文字列の暗号化された文字列を生成します。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を置き換えました。暗号化されたIDを持つオリジナルのIDを交換した後$Model_objectの特定のインスタンスprint_r()については

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

私に次のような結果になります。

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

json_encode()は、暗号化されたidの最初の10進数字のみを出力します。

{"id":4} 

なぜこのようなことが起こっているのか、この問題を解決する方法を説明できるのであれば、本当に感謝します。

P.S.私はすでにこの問題を探知して、Stack Overflowも検索しました。だから、コメントで言及しないでください。

+0

二重引用符で囲んでみましたか? – andrewnagyeb

+3

質問から多くのコードを除外しているため、実際に何が起こっているのかを実際に伝えることはできません。問題を示す*有効なコードで質問を更新してください。そのコードが実行可能な*例であればさらに優れています。 – Sammitch

+0

IDを整数*変数に暗黙的に割り当てることができます。そして、型変換は "4d ..."を4に変換します。最初の桁を取っていないので、唯一の* 10進数を取っています。 idを1337abcまたはabc1337に設定して、何が起こるかを確認してください。 – LSerni

答えて

0

@LSerni私は暗黙整数$Model_object->idストリングで暗号化されたIDを付与し、前記のように。

私は新しい動的プロパティー$Model_object->encrypted_idを作成し、それに暗号化されたIDを割り当て、反対側でそのプロパティーを呼び出しました。それは魅力のように働いた。

この問題についての洞察をいただき、ありがとうございました。

関連する問題