다음 코드를 사용하여 주어진 문자열에 대해 암호화 된 문자열을 생성합니다.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를 교체 한 후 $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의 단지 소수 첫째 자리를 출력한다.
{"id":4}
왜 이런 일이 일어나고 있는지 그리고 어떻게이 문제를 극복 할 수 있는지 설명해 주시면 감사하겠습니다.
P. 나는 이미이 문제를 봤어 스택 오버플로 너무에서 검색했습니다. 따라서 댓글에서 언급하지 마십시오.
큰 따옴표로 묶으려고 했습니까? – andrewnagyeb
질문에서 많은 코드를 찾아내어 실제로 무슨 일이 일어나는지 알 수있는 방법이 없습니다. 문제를 나타내는 * 유효한 * 코드로 질문을 업데이트하십시오. 그 코드가 * runnable * 예제 인 경우조차 더 좋습니다. – Sammitch
id를 * integer * 변수에 암시 적으로 할당 할 가능성이 있습니다. 그리고 타입 변환은 "4d ..."를 4로 변환합니다. 첫 번째 숫자를 취하지 않고 * 10 진수 만 취합니다. id를 1337abc 또는 abc1337로 설정하고 어떤 결과가 발생하는지보십시오. – LSerni