【问题标题】:SJCL library decryption issueSJCL 库解密问题
【发布时间】:2017-07-18 13:19:04
【问题描述】:

我在尝试使用 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

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

【问题讨论】:

  • 使用HTTPS即可,无需自己加密密码。
  • 他不是在加密密码,而是在加密给定的明文。输入encda​​ta和dpassword的值后能不能输出(比如data)?

标签: javascript sjcl


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-18
    • 2016-07-28
    • 2022-01-16
    • 2016-10-02
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    • 2013-04-08
    相关资源
    最近更新 更多