在Node.js中使用Crypto时出错

我正在使用Node.js的Crypto库进行encryption/解密,如下所示:

encrypt = function(text, passPhrase){ var cipher = crypto.createCipher('AES-128-CBC-HMAC-SHA1', passPhrase); var crypted = cipher.update(text,'utf8','hex'); crypted += cipher.final('hex'); return crypted; } , decrypt = function(text, passPhrase){ var decipher = crypto.createDecipher('AES-128-CBC-HMAC-SHA1', passPhrase) var dec = decipher.update(text,'hex','utf8') dec += decipher.final('utf8'); return dec; } 

encryption部分没有问题。 如果我发送正确的passPhrase解密也没有问题。 我的问题是,如果我发送错误的passPhrase解密,代码中断,并抛出一个错误:

 TypeError: Bad input string at Decipher.Cipher.update (crypto.js:279:27) at module.exports.decrypt (/xxxx/yyyyy/jjj/ssss/encryptionService.js:19:28) at Object.module.exports.passwordDecryptor (/xxxx/yyyyy/jjj/ssss/encryptionService.js:59:56) at Object.<anonymous> (/xxxx/yyyyy/jjj/ssss/test.js:32:33) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) 

我不想要它发生。 我想举个例子, 解密函数返回“Passpharse is wrong”句子。 根据文档中的链接描述, createDecipher函数不接受callback函数。 任何人有任何解决办法?

试着解决了这个问题。 (callback函数不起作用。)

  decrypt = function(text, passPhrase){ var decipher = crypto.createDecipher('AES-128-CBC-HMAC-SHA1', passPhrase); try { var dec = decipher.update(text,'hex','utf8'); dec += decipher.final('utf8'); return dec; } catch (ex) { console.log('failed'); return; } }