解密值未正确显示

时间:2017-04-05 12:00:35

标签: php encryption

我正在加密值并在URL的帮助下在另一个页面上发送加密值,并且我正在解密值但解密值未正确显示。我得到的输出就像 \ j3B9 [rΫmNB〜=:NC

你能帮助我吗?

的index.php

$input =5;
$encrypted = encryptIt( $input );
echo $encrypted;
function encryptIt( $q ) {
    $cryptKey  = 'qJB0rGtIn5UB1xG03efyCp';
    $qEncoded      = base64_encode( mcrypt_encrypt( MCRYPT_RIJNDAEL_256, md5( $cryptKey ), $q, MCRYPT_MODE_CBC, md5( md5( $cryptKey ) ) ) );
    return( $qEncoded );
}

echo "<a href='decry.php?user_id=$encrypted'>Click here</a>";

decry.php

$id=$_GET['user_id'];
$decrypted = decryptIt( $id );
echo $decrypted;
function decryptIt( $q ) {
    $cryptKey  = 'qJB0rGtIn5UB1xG03efyCp';
    $qDecoded      = rtrim( mcrypt_decrypt( MCRYPT_RIJNDAEL_256, md5( $cryptKey ), base64_decode( $q ), MCRYPT_MODE_CBC, md5( md5( $cryptKey ) ) ), "\0");
    return( $qDecoded );
}

1 个答案:

答案 0 :(得分:0)

正如RiggsFolly所说使用urlencode()。 当我尝试使用不同的数字时,它对一些人来说很好。虽然其他人遇到了上述问题(我猜它出现在=下方),但是一旦我添加urlencode()就修复了它!

$input =5;
$encrypted = encryptIt( $input );
echo $encrypted;
function encryptIt( $q ) {
    $cryptKey  = 'qJB0rGtIn5UB1xG03efyCp';
    $qEncoded      = base64_encode( mcrypt_encrypt( MCRYPT_RIJNDAEL_256, md5( $cryptKey ), $q, MCRYPT_MODE_CBC, md5( md5( $cryptKey ) ) ) );
    return( $qEncoded );
}

echo "<a href='decry.php?user_id=".urlencode($encrypted)."'>Click here</a>";