首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SJCL库解密问题

SJCL库解密问题
EN

Stack Overflow用户
提问于 2017-07-18 21:19:05
回答 1查看 647关注 0票数 0

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

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

代码语言:javascript
复制
encdata = sjcl.encrypt($('input[name="pass"]').val(), $('textarea[name="cleartxt"]').val());

我用ajax把数据放到数据库里。现在,当我解密数据时,我从我的数据库中提取sjcl JSON字符串,并通过以下函数运行它:

代码语言:javascript
复制
function decryptdata(encdata) {
    var dpassword = prompt('Decryption Password');
    console.log(sjcl.decrypt(dpassword, encdata));
    //$('.decrypted').html(dec);
}

我在控制台上得到了以下错误,并且它不会超出该sjcl.decrypt语句。

代码语言:javascript
复制
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

我肯定是做错了什么吧?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-19 21:33:24

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

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45167987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档