1

我正在尝试做的是将加密消息和相应的密钥(双向加密)发送到 php 页面以对其进行解密,然后在响应中返回结果。

这是我尝试使用 jquery 发送的加密消息的示例。

var message = 'oPnHK7DE33xOLZok/23a92XH9NI3SlHGCulnh6+IuZN4cGhymYm5yxOmDynCDAG8u+cAbJ4KifxzsWsGgmTXoZoAtjkAhph/eWyuwMNfviNtgmz4x02JVJ6Rc6wDsqzzd6Mrl88ZZXyEshD1/+9JRS9rNalCtv//pC2FRAZMQhH5wxDn9kb6JITSs/aagUGFbLmq+jxg5ty55SKmri6IJg==';

var key = 'password';

$.post('decodeMessage.php?message=' + encodeURIComponent(message) + '&key=' + key, function(data) {
    // do stuff with returned data here
});

接收php代码如下

 <?php
 $encrypted = rawurldecode($_POST['message']);
 $key = $_POST['key'];

 $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted), MCRYPT_MODE_CBC, md5(md5($key))), "\0");

 echo $decrypted

 ?>

我遇到的问题是它只是返回乱码而不是实际解码消息。

通过将 $encrypted 的值设置为在 ajax 请求中传递的编码值,我已经在没有 ajax 的情况下对此进行了测试,它工作正常。

如果有人能给我任何关于为什么会发生这种情况的指导,我将不胜感激。

非常感谢。

4

3 回答 3

3

而是将数据作为对象发送。

$.post('decodeMessage.php', {message: message, key: key}, function(data) {
    // Wohoo
});

你看,jQuery 在晦涩的代码层下为你处理了这些东西 :-)

于 2013-07-11T12:27:58.347 回答
0

试试这个方法

$.post("decodeMessage.php", { message: message, key: key },function(data){
   // ....
});
于 2013-07-11T12:28:26.677 回答
0

你传递一个查询字符串

$.post('decodeMessage.php?message=' + encodeURIComponent(message) + '&key=' + key, function(data) {

然后使用 $_GET 而不是 post

 $encrypted = rawurldecode($_GET['message']);
 $key = $_GET['key'];

如果您想在 PHP 中将元素作为 POST 变量处理,请将 jquery 代码更改为如下所示

var data = { message: message, key: key };
$.post('decodeMessage.php', data, function(data) {
   //handler 
});
于 2013-07-11T12:28:26.933 回答