SJCL 库解密问题



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

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

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

我将数据ajax到数据库。现在,当我去解密数据时,我从数据库中提取 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

我肯定在这里做错了什么吗?

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

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

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

相关内容

  • 没有找到相关文章

最新更新