Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 解密的值未正确显示_Php_Encryption - Fatal编程技术网

Php 解密的值未正确显示

Php 解密的值未正确显示,php,encryption,Php,Encryption,我正在加密这些值,并在URL的帮助下在另一个页面上发送一个加密值,在那里我正在解密值,但解密值没有正确显示。我得到了像这样的输出 \j3�B��9[rΫ�M�N�B~=��:�n  c.。� 你能帮我吗 Index.php $input =5; $encrypted = encryptIt( $input ); echo $encrypted; function encryptIt( $q ) { $cryptKey = 'qJB0rGtIn5UB1xG03efyCp'; $

我正在加密这些值,并在URL的帮助下在另一个页面上发送一个加密值,在那里我正在解密值,但解密值没有正确显示。我得到了像这样的输出 \j3�B��9[rΫ�M�N�B~=��:�n  c.。�

你能帮我吗

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>";
$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 );
}

正如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>";
$input=5;
$encrypted=encryptIt($input);
echo$加密;
函数encryptIt($q){
$cryptKey='qJB0rGtIn5UB1xG03efyCp';
$qEncoded=base64_encode(mcrypt_encrypt(mcrypt_RIJNDAEL_256,md5($cryptKey))、$q,mcrypt_MODE_CBC,md5(md5($cryptKey));
报税表(已编码)(元);;
}
回声“;

警告:
mcrypt_encrypt
在PHP7.1感谢您回复RiggsFolly先生时被弃用。还有其他方法吗?因为我可以在同一页上解密值,但不能在另一页上解密。加密和解密工作正常,所以这一定与您如何在查询字符串上传递值有关,如果某些内容值得加密ting,它不属于URL…你应该重新考虑你在做什么。mcrypt扩展已经被抛弃了近十年,而且使用起来也相当复杂。因此,它已经被弃用,取而代之的是OpenSSL,在PHP 7.2中它将从核心中删除并进入PECL。谢谢你回复Razentic先生。它对我有用但是将来会有什么问题吗?我认为将来不会有任何问题(我做了一个快速编辑,因为回看它没有太多意义!)。谢谢你的帮助Razentic先生。