加密节点Js

时间:2016-07-07 08:04:22

标签: android node.js

嗨,这是我的加密代码,我试图通过json解密Android中的代码。我可以在节点js中解密这段代码。但当我试图解密android错误发生时所以任何人建议我在我的节点js代码或android中发生问题。

app.post('/insert',  function (req,res){
        var data = {
            userId:req.body.fname,
            firstName:req.body.fname
        };


                var cipher = crypto.createCipher('aes128', 'a password');
                 data.firstName = cipher.update(data.firstName, 'utf8','base64' );
                data.firstName += cipher.final('base64');
                console.log(data);

         con.query("insert into md5 set ?",[data], function (err,rows){
            if(err) throw err;  
                res.send("Value has been inserted");
            })
             console.log(data.firstName);
        })

3 个答案:

答案 0 :(得分:0)

当我们在我们的系统(包括数据库)中使用任何类型的加密和解密时,我们所有的客户端应该具有解析该消息的类似凭据。

让我们说我们有后端,网络和移动应用程序(Android / iPhone)。那么什么后端用任何凭据加密消息所有其他客户端可以使用相同的凭据来解密该消息。

这里我建议AES使用 256与Predefine IV和KEY 。而加密是非常有名的图书馆,将在所有平台上拥有该功能。我使用Node.js。

加密文字小组:

encryptText: function(text) {
        var cipher = crypto.createCipheriv(Constant.algo, Constant.key, Constant.iv);
        var result = cipher.update(text, "utf8", 'base64');
        result += cipher.final('base64');
        return result;
    },

解密文字小片:

decryptText: function(text) {
        console.log(text);

        var decipher = crypto.createDecipheriv(Constant.algo, Constant.key, Constant.iv);
        var result = decipher.update(text, 'base64');
        result += decipher.final();
        return result;
    },

答案 1 :(得分:0)

你可以使用salt和hash进行攻击 先生成盐

   var salt = crypto.randomBytes(16).toString('base64');

第二次生成加密密码

   var password = crypto.pbkdf2Sync(password, new Buffer(this.salt, 'base64'), 10000, 64, 'sha1').toString('base64');

使用相同的方法执行登录。

答案 2 :(得分:0)

我推荐使用 Crypto-JS 库:npm install crypto-js

并且有多种方法可以在crypto-js中加密字符串,查看示例认为这是最合适的

const CryptoJS = require("crypto-js");

// Encrypt
var ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123').toString();

// Decrypt
var bytes  = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');
var originalText = bytes.toString(CryptoJS.enc.Utf8);
 
console.log(originalText); // 'my message'

所以最终的解决方案看起来像这样

app.post('/insert',  function (req,res){
  var data = {
    userId:req.body.fname,
    firstName:req.body.fname
  };


  const encryptedFirstName = CryptoJS.AES.encrypt(data.firstName, 'password'); // encrypting the `firstName` gotten from the `data` object
  data.firstName = encryptedFirstName // setting the `firstName` in the `data` object to encrypted value
  console.log(data);

  con.query("insert into md5 set ?",[data], function (err,rows){
     if(err) throw err;  
         res.send("Value has been inserted");
     })
     console.log(data.firstName);
     })