如何使用GET将加密的消息传递给浏览器?

时间:2013-12-20 12:16:09

标签: php html browser phpseclib

我利用RSA加密一些数据,我希望以这种方式将数据作为GET链接传递给我的服务器:

myserver.ext/index.php?data=Âhå/2#ÛI§cw¦»L¸ÙvóìßKßàë%`N5 Ï'üQn6ÕYì&7ï,Î}:i!öççk\¶Z:Ò/MTÚFÿ*ßÕ®ØÒ¿¢y:ïM&CçëöѤÛ5Âÿ­QöÎÙ Ð=Páë*¹-fð

如果我在此链接上键入'enter',则borwser会添加特殊字符(以清除我认为的链接)以及如果我使用

打印'data'的内容
echo $_GET['data'];

但是php削减了内容。 有没有办法解决这个问题?

感谢。

编辑:我尝试使用编码网址,但RSA解密不起作用。奇怪的是,在我的本地服务器(LAMPP)中它完美地工作,但不在远程服务器上。

3 个答案:

答案 0 :(得分:3)

使用urlencodebase64_encode,然后进行相应的解码。

答案 1 :(得分:1)

您可以使用这些功能来加密/解密您的数据

    function rsa_encrypt($yourPublickey, $message)
    {
        $rsa = new Crypt_RSA();
        $rsa->loadKey($yourPublickey);
        $encrypted = urlencode(base64_encode($rsa->encrypt($message)));

        return $encrypted;
    }

    function rsa_decrypt($yourPrivatekey, $cryptedData)
    {
        $rsa = new Crypt_RSA();
        $rsa->loadKey($yourPrivatekey);
        $decrypted = $rsa->decrypt((base64_decode($cryptedData)));

        return $decrypted;
    }

答案 2 :(得分:0)

要通过url传递斜杠而不将其更改为新的操作或文件夹,您必须将所有“/”转换为我使用的“---”特定模式,并在您的代码中将所有“---”转换为“/” “而且你在get参数中得到了你的价值。

像:

var temp = replaceAll('/','---',your_link);

function replaceAll(find, replace, str) {
 return str.replace(new RegExp(find, 'g'), replace);
}