2016-07-07 124 views
3

嗨,這是我的加密代碼,我試圖通過json解密Android中的代碼。我可以在節點js中解密這段代碼。但是,當我試圖解密在android錯誤發生,所以任何人建議我在哪裏出現問題,無論是在我的節點js代碼或android。加密節點Js

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

回答

0

當我們在使用任何類型的加密和解密的進入我們的系統(包括DB)我們所有的客戶應當具有類似憑據來解析該消息。

可以說我們有後端,網絡和移動應用程序(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; 
    }, 
0

可以incrypt使用鹽和哈希 第一生成鹽

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

秒生成加密密碼

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

使用相同的方法執行登錄。