SJCL库解密问题

时间:2017-07-18 13:19:05

标签: javascript sjcl

当我尝试使用SJCL库进行简单解密时,我遇到了问题。我可以很好地加密数据。

在这个例子中,我保存了加密数据,如下所示:

encdata = sjcl.encrypt($('input[name="pass"]').val(), $('textarea[name="cleartxt"]').val());

我将数据写入数据库。现在,当我去解密数据时,我从数据库中提取sjcl JSON字符串并通过此函数运行它:

function decryptdata(encdata) {
    var dpassword = prompt('Decryption Password');
    console.log(sjcl.decrypt(dpassword, encdata));
    //$('.decrypted').html(dec);
}

我在控制台上收到以下错误,它不会超出sjcl.decrypt语句。

sjcl.js:57 Uncaught TypeError: a.replace is not a function
at Object.decode (sjcl.js:57)
at Object.decrypt (sjcl.js:56)
at decryptdata (my.js:72)
at my.php?r=test:13

我肯定在这里做了一些明显错误的事情?

1 个答案:

答案 0 :(得分:1)

我设法解决了我的问题。基本上这是两个/三个问题。我需要做一个jquery" encodeURIComponent"在我将它发送到执行数据库插入的php脚本之前的参数上,因为PHP提取功能剥离了" +"在加密的字符串中。

第二个问题是必须使用PHP rawurldecode(而不是urldecode)将我的字符串恢复为预先ajax格式,使用" +" chars,而不是" "

第三个问题是使用jquerys" JSON.stringify"从javascript'对象'转换它到sjcl.decrypt可以使用的字符串。原来的javascript错误现在有意义了!

相关问题