解密.update上的encryption错误

我正在为Node项目编写一个JavaScript模块。

我得到一个非常模糊的错误

protocol\Parser.js:82 throw err; TypeError: error:0000000:lib(0):func(0):reason(0) at Decipher.Cipher.update (crypto.js:279:27) 

以下是我的javalogin.js文件。 错误似乎发生在decipher.update(rows[i].CC, 'hex', 'utf8'); 线。

我有一些控制台打印出来。

  console.log('DB UserName:', rows[i].UserName); //returns correct username console.log('DB CC: ', rows[i].CC); //returns 2bf9kdk02kdnf3dk (correct CC hash on db) 

JavaLogin.js:

 var mysql = require('mysql'); var crypto = require('crypto'); var sha = require('sha1'); var algorithm = 'aes256'; // or any other algorithm supported by OpenSSL var key = 'secret'; var cipher = crypto.createCipher(algorithm, key); var decipher = crypto.createDecipher(algorithm, key); decipher.setAutoPadding(auto_padding=true); var db = mysql.createConnection( { host : 'host location', user : 'username', password : 'password', database : 'databaseName', } ); exports.auth = function(query, callback){ db.query(query, function(err, rows, fields) { if (err) throw err; for (var i in rows) { console.log('DB UserName:', rows[i].UserName); console.log('DB CC: ', rows[i].CC); var decrypted = decipher.update(rows[i].CC, 'hex', 'utf8'); decrypted += decipher.final('utf8'); console.log(decrypted); } var info = rows; return callback(null,info); }); }; exports.add = function(query, callback){ db.query(query, function(err, rows, fields) { var encrypted = cipher.update('ccnumber', 'utf8', 'hex'); encrypted += cipher.final('hex'); if (err) throw err; // for (var i in rows) { // console.log('DB Info:', rows[i].UserName); // } var info = rows; return callback(null,info); }); }; 

感谢您在评论中提供的小而有用的帮助。 我明白了这一点。

在原始邮政我试图设置var decipher = crypto.createDecipher(algorithm,key); 到一个全局variables,所以我可以在我的JavaLogin.js中的多个函数中使用它。

如果有人能告诉我如何做到这一点,我将不胜感激。

下面的工作代码部分:

 exports.auth = function(query, callback){ db.query(query, function(err, rows, fields) { if (err) throw err; for (var i in rows) { console.log('DB UserName:', rows[i].UserName); console.log('DB CC: ', rows[i].CC); var decipher = crypto.createDecipher(algorithm, key); //moved this from the top of the file var decrypted = decipher.update(rows[i].CC, 'hex', 'utf8'); decrypted += decipher.final('utf8'); console.log("decrypted:" + decrypted); } var info = rows; return callback(null,info); }); };