【问题标题】:Node JS Crypto: wrong password while decryptNode JS Crypto:解密时密码错误
【发布时间】:2016-02-15 16:13:38
【问题描述】:

我正在使用以下函数加密/解密字符串:

function encrypt(text, pswrd){
  var cipher = crypto.createCipher(algorithm,pswrd),
      crypted = cipher.update(text,'utf8','hex');
      crypted += cipher.final('hex');
  return crypted;
}

function decrypt(text, pswrd){
  var decipher = crypto.createDecipher(algorithm,pswrd),
      dec = decipher.update(text,'hex','utf8');
      dec += decipher.final('utf8');
  return dec;
}

使用inquirer 询问密码,因此用户输入密码进行加密,然后应使用相同的密码进行解密。

密码匹配时一切正常,但问题是密码错误时。我找不到回调/方法来处理控制台输出的错误,然后由于密码错误而解密失败。终端显示:

? Use same password: *
p�pP��X�B
��=�a�_��b��EyX��7�����X�y�����+�Rr�<��΅W��B�������am4r���+��v�
readline.js:924
            throw err;
            ^

SyntaxError: Unexpected token 
    at Object.parse (native)

使用错误密码解密时,如何处理此错误?

【问题讨论】:

  • 你试过try {...} catch(e){...}吗?
  • 您通常不会使用这样的密码进行自动完整性检查。你用的是什么算法?
  • @Phil_1984_ 是algorithm = 'aes-256-ctr'
  • 您应该查看经过身份验证的加密或使用处理身份验证的现有加密库,以便正确捕获不正确的密码错误。

标签: javascript node.js encryption error-handling


【解决方案1】:

我们有同样的询问,希望对你有帮助,我做了什么解决办法。

密码解密没有检查密码的回调,但我做得很简单,每次收到数据(也用密码加密)时,我都会创建一个令牌验证器(也用密码加密)。 如果通过我的 tokenValidator(hmac 或 web-token)验证了令牌(从正确密码解密),则令牌和“数据”将使用相同的密码进行加密。那么“数据”现在可以从我的服务器进行处理

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 2023-03-17
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多