Javascript JS:存储在数据库(SJCL)后无法解密

Javascript JS:存储在数据库(SJCL)后无法解密,javascript,ajax,encryption,sjcl,Javascript,Ajax,Encryption,Sjcl,我正在试验,希望对字符串进行加密,然后解密 以下代码可以正常工作: var pw = "password"; var message = "message"; var encrypted = sjcl.encrypt(pw, message); alert(encrypted); var decrypted = sjcl.decrypt(pw, encrypted) alert(decrypted); 第一个警报显示加密数据,第二个警报显示“消息”。但是,我需要将var加密存储在SQL数据库

我正在试验,希望对字符串进行加密,然后解密

以下代码可以正常工作:

var pw = "password";
var message = "message";
var encrypted = sjcl.encrypt(pw, message);
alert(encrypted);

var decrypted = sjcl.decrypt(pw, encrypted)
alert(decrypted);
第一个警报显示加密数据,第二个警报显示“消息”。但是,我需要将var加密存储在SQL数据库中,因此我通过ajax将其发送到服务器,服务器将其存储在一个表中

我随后请求加密消息(再次通过ajax)并将其存储在变量encrypted中。然后我想解密它:

var decrypted = sjcl.decrypt(pw, encrypted);
alert(decrypted);
但我没有收到包含字符串“messages”的警报,控制台只显示“uncaughtexception:CORRUPT:ccm:tag不匹配”

我没有更改加密文本,这两个示例之间的唯一区别是我从服务器获得了加密的变量

你知道怎么了吗

编辑:

将其存储在数据库中的ajax代码:

var url = "action.php?action=r&n="+name+"&pw="+pw_hashed+"&encrypted="+encrypted;
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()
{
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
        if(xmlhttp.responseText == "success")
        {
            alert("success");
        }
    }
}
以及接收数据的ajax代码:

var url = "action.php?action=l&n="+name+"&pw="+pw_hashed;
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()
{
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
        if(xmlhttp.responseText == "success")
        {
            var encrypted = xmlhttp.responseText;;
        }
    }
}

我还将加密后的字符串与服务器上的字符串和客户端的字符串(用于解密)进行了比较:都是一样的。

问题几乎肯定在于如何构造查询参数。您需要使用对每个参数值进行编码,因为数据可能包含
+
等字符,除非正确编码,否则这些字符将转换为空格

您的存储URL使用
encodeURIComponent

var url = "action.php?action=r&n="+encodeURIComponent(name)+"&pw="+encodeURIComponent(pw_hashed)+"&encrypted="+encodeURIComponent(encrypted);
以及您的检索URL:

var url = "action.php?action=l&n="+encodeURIComponent(name)+"&pw="+encodeURIComponent(pw_hashed);

显示您的ajax代码以及用于从bd存储和检索数据的代码。好的,我编辑了我的帖子并包含了代码。尝试uri编码您的数据
“action.php?action=r&n=“+encodeURIComponent(name)+”&pw=“+encodeURIComponent(pw_hashed)+”&encrypted=“+encodeURIComponent(加密)成功了!非常感谢你的帮助!