2016-07-09 3 views
-1

이것은 내가 암호화 된 형태로 URL에 일부 데이터를 전달하는 내 PHP 코드입니다.URL로 암호화 된 데이터를 전달하고 PHP에 의해 암호 해독

<?php 
$cancel = encrypt($_GET['id'] . '|' . hotel($_GET['id'], 'area') . '|' . $_GET['roomid']); 
<input type = "hidden" name = "cancel_return" value = "<?php echo ROOT_URL; ?>/canceled.php?data=<?php echo $cancel;?>" > 

이 내가 URL 데이터를 가져 다음 페이지는 다음과 같습니다

$custom_decrypt = $_GET['data']; 
$res = decrypt($custom_decrypt); 
print_r($res); 

암호화 및 암호 해독 코드 :

function encrypt($text){ 

     $salt = 'DFS65'; $key = md5($salt); 
     $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256,$key, $text, MCRYPT_MODE_CBC, md5($key)); 
     $encrypted = base64_encode($encrypted); return $encrypted; 

     } 

    function decrypt($text) { 
     $salt = 'DFS65'; 
     $key = md5($salt); 
     $data = base64_decode($text); 
     $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256,$key, $data, MCRYPT_MODE_CBC, md5($key)); 
     $decrypted = rtrim($decrypted, "\0"); return $decrypted; 
    } 

하지만 난 암호 해독이 결과를 가지고 :

3 = E j F 1tt 43a_ 첫 번째 줄에서 PHP 스크립트의 ŋ Q4

+0

'어딘가 여기' /cancelled.php? data = ">' –

+0

고맙지 만 여전히 같은 결과가 나옵니다. –

+0

오픈 SSL을 들여다 볼 수 있습니다. 그것은 mcrypt보다 더 나은 지원을합니다. – Nitin

답변

0

You errors:

  • 부재 PHP 닫기 태그 ?>
  • 값이 input 값 태그로 전달해야
  • 수신기 파일 URL을 action에 있어야합니다 매개 변수 form
  • 에 의해 전달되어야합니다.이름 매개 변수

여기 고정 코드입니다. 그것은 디버그에 대한 수정, 그래서 그것을 확인하고 필요

index.php에 업데이트되었습니다

<?php 

$_GET['id'] = '1'; 
$_GET['roomid'] = '2'; 

function encrypt($text){ 

    $salt = 'DFS65'; $key = md5($salt); 
    $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256,$key, $text, MCRYPT_MODE_CBC, md5($key)); 
    $encrypted = base64_encode($encrypted); return $encrypted; 

} 

function decrypt($text) { 
    $salt = 'DFS65'; 
    $key = md5($salt); 
    $data = base64_decode($text); 
    $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256,$key, $data, MCRYPT_MODE_CBC, md5($key)); 
    $decrypted = rtrim($decrypted, "\0"); return $decrypted; 
} 

?> 

<?php $cancel = encrypt($_GET['id']. '|'. $_GET['roomid']);?> 

<form action="/canceled.php" method="get"> 
<input type="input" readonly="readonly" name="data" value="<?php echo $cancel;?>"> 
<input type="submit" > 
</form> 

및 canceled.php

<?php 
function encrypt($text){ 

    $salt = 'DFS65'; $key = md5($salt); 
    $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256,$key, $text, MCRYPT_MODE_CBC, md5($key)); 
    $encrypted = base64_encode($encrypted); return $encrypted; 

} 

function decrypt($text) { 
    $salt = 'DFS65'; 
    $key = md5($salt); 
    $data = base64_decode($text); 
    $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256,$key, $data, MCRYPT_MODE_CBC, md5($key)); 
    $decrypted = rtrim($decrypted, "\0"); return $decrypted; 
} 



$custom_decrypt = $_GET['data']; 
$res = decrypt($custom_decrypt); 
print_r($res); 

출력 :

1|2 
+0

오류는 잘못된 필드 이름 ('cancel_return'대신 '$ _GET ['data '])입니다. –

+0

var의 이름을 결정할 때까지 결정해야합니다. 내 스크립트 단순화 된 예제가 작동합니다. –

0

사용자의 입력에서보세요 :

<input type="hidden" name="cancel_return" value="......."> 

입력 필드 이름이 cancel_return이지만, 서버에서 사용자가 설정 특성 도착해야 해요

$custom_decrypt = $_GET['data']; 

실제로해야한다 :

$custom_decrypt = $_GET['cancel_return']; 

이 ($_GET['cancel_return'])은 암호화 된 값을 반환합니다. 그런 다음 값을 해독하고 parse_url을 사용하여 해독 된 URL의 쿼리에서 data 값을 가져올 수 있습니다.

$cancel_return = $_GET['cancel_return'];      // Get the CORRECT value sent from the client 
$cancel_return_url = parse_url($cancel_return);    // Parse the URL that was passed to the server and return its components 
parse_str($cancel_return_url['query'], $cancel_return_query); // Parse the parameters of the query string of the url 
echo decrypt($cancel_return_query['data']);     // decrypt the 'data' parameter of the query string