2017-12-19 9 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를 교체 한 후 $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. 나는 이미이 문제를 봤어 스택 오버플로 너무에서 검색했습니다. 따라서 댓글에서 언급하지 마십시오.

+0

큰 따옴표로 묶으려고 했습니까? – andrewnagyeb

+3

질문에서 많은 코드를 찾아내어 실제로 무슨 일이 일어나는지 알 수있는 방법이 없습니다. 문제를 나타내는 * 유효한 * 코드로 질문을 업데이트하십시오. 그 코드가 * runnable * 예제 인 경우조차 더 좋습니다. – Sammitch

+0

id를 * integer * 변수에 암시 적으로 할당 할 가능성이 있습니다. 그리고 타입 변환은 "4d ..."를 4로 변환합니다. 첫 번째 숫자를 취하지 않고 * 10 진수 만 취합니다. id를 1337abc 또는 abc1337로 설정하고 어떤 결과가 발생하는지보십시오. – LSerni

답변

0

@LSerni 내가 암시 정수 재산 $Model_object->id문자열입니다 암호화 된 ID를 할당하고, 말했듯이.

그래서 새 동적 속성 $Model_object->encrypted_id을 만들고 암호화 된 ID를 할당하고 반대쪽에서 해당 속성을 호출했습니다. 그것은 매력처럼 작동했습니다.

문제에 대한 통찰력을 얻기 위해 @LSerni를 이용해 주셔서 감사합니다.

관련 문제