1

This is the code of my site. First time I run, it worked and showed data but the other times it shows the error "Trying to add data in unsupported state" Please help me.

var connection = require("./dbconnection");

var keys = require('./keys');

var mysql = require('mysql');

var crypto = require('crypto');

var algoritm = "aes-256-ctr";

var nameCipher = crypto.createCipher(algoritm, keys.name);

var passwordCipher = crypto.createCipher(algoritm, keys.password);

var nameDecipher = crypto.createDecipher(algoritm, keys.name);

var passwordDecipher = crypto.createCipher(algoritm, keys.password);


function encrypt(text, type) {

    if (type === 1) {

        var nameC = nameCipher.update(text, "utf8", "hex");

        nameC += nameCipher.final("hex");

        return nameC;

    } else if (type === 2) {

        var passwordC = passwordCipher.update(text, "utf8", "hex");

        passwordC += passwordCipher.final("hex");

        return passwordC;

    }

}

function decrypt(text, type) {

    if (type === 1) {

        var nameDec = nameDecipher.update(text, "hex", "utf8");

        nameDec += nameDecipher.final("utf8");

        return nameDec;

    } else if (type === 2) {

        var passwordDec = passwordDecipher.update(text, "hex", "utf8");

        passwordDec += passwordDecipher.final("utf8");

        return passwordDec;

    }

}

function logIn(name, password) {

    var eName = encrypt(name, 1);

    var ePassword = encrypt(password, 2);

    var dData;

    console.dir(eName);

    console.dir(ePassword);

    connection.getConnection(function (err, connection) {

        connection.query("SELECT * FROM students WHERE name=\"" + eName + "\" AND password=\"" + ePassword + "\"",

            function (err, data) {

                if (err) throw err;

                console.dir(data);

                dData = data;

            })

    })

}

exports.logIn = logIn;
Charlie
  • 22,886
  • 11
  • 59
  • 90
m mm
  • 15
  • 3

1 Answers1

0

Always create a new cipher before updating. You should create them inside the encrypt and decrypt functions.

function encrypt(text, type) {


    var nameCipher = crypto.createCipher(algoritm, keys.name);   //<---- here
    var passwordCipher = crypto.createCipher(algoritm, keys.password);  //<---- here

    if (type === 1) {

        var nameC = nameCipher.update(text, "utf8", "hex");

        nameC += nameCipher.final("hex");

        return nameC;

    } else if (type === 2) {

        var passwordC = passwordCipher.update(text, "utf8", "hex");

        passwordC += passwordCipher.final("hex");

        return passwordC;

    }

}
Charlie
  • 22,886
  • 11
  • 59
  • 90