1

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);
  });
};
4

1 に答える 1

1

コメントでのその小さいながらも役立つ助けに感謝します。という理由で解りました。

元の投稿var decipher = crypto.createDecipher(algorithm,key);では、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);
  });
};
于 2014-09-15T16:28:40.193 に答える