原始网址
/category.php?id=28
加密后
/category.php?id=DyAtftpy3cg4RNtJWT51vFlU5fMVuN+bvaTC365XYkU=
function encryptIt( $q ) {
$cryptKey = 'qJB0rGtIn5UB1xG03efyCp';
$qEncoded = base64_encode( mcrypt_encrypt( MCRYPT_RIJNDAEL_256, md5( $cryptKey ), $q, MCRYPT_MODE_CBC, md5( md5( $cryptKey ) ) ) );
return $qEncoded;
}
解密
decryptIt($_REQUEST['id']);
使用过的功能
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;
}
但它会返回���.�_��JC �\Y|{�[=4�V!�o$��
答案 0 :(得分:3)
base64_encode( mcrypt_encrypt( MCRYPT_RIJNDAEL_256, md5( $cryptKey ),
$q, MCRYPT_MODE_CBC, md5( md5( $cryptKey ) ) ) );
应该是
base64_encode( mcrypt_encrypt( MCRYPT_RIJNDAEL_256, md5( $cryptKey ),
$var, MCRYPT_MODE_CBC, md5( md5( $cryptKey ) ) ) );
什么是$q
?是不是$var
?(在encryptIt
)
为我工作:
function decryptIt($data, $key) {
$key = md5($key);
$data = base64_decode($data);
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256,
$key, $data, MCRYPT_MODE_CBC, md5($key));
$decrypted = rtrim($decrypted, "\0");
return $decrypted;
}
function encryptIt($data, $key) {
$key = md5($key);
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256,
$key, $data, MCRYPT_MODE_CBC, md5($key));
$encrypted = base64_encode($encrypted);
return $encrypted;
}
// Testing
header('Content-Type: text/plain');
$data = 'testing';
$key = 'qJB0rGtIn5UB1xG03efyCp';
$encrypted = encryptIt($data, $key);
// Added your own data here (IT WORKS)
$encrypted = 'DyAtftpy3cg4RNtJWT51vFlU5fMVuN+bvaTC365XYkU=';
echo 'Encrypted: ', $encrypted, '<br>', PHP_EOL;
$decrypted = decryptIt($encrypted, $key);
echo 'Decrypted: ', $decrypted, '<br>', PHP_EOL;
^ 不知道你做错了什么,但我做了一些事情: 我停止了复杂的指令疯狂。为每个指定变量并使代码清晰,易于遵循和......功能......我认为:)
PS :拥有单行很好,但如果你有1行内的错误会折磨你。
答案 1 :(得分:1)
好的,我的上一篇文章被删除了......
我看到它正在使用cli而不是通过apache。
这是我的解决方案:
decryptit(htmlentities($_GET['i'],ENT_QUOTES | ENT_IGNORE, "UTF-8"));
顺便说一下,我现在使用php手册中的代码。
此致