节点JS加密:解密时密码错误

时间:2016-02-15 16:13:39

标签: javascript node.js encryption error-handling

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

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)

如果使用错误的密码解密,我该如何处理此错误?

1 个答案:

答案 0 :(得分:-1)

我们也有同样的疑问,希望能对我有所帮助。

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