我有一個帶有用戶名和密碼輸入框的基本html頁面。隨着登錄按鈕。我正在使用cryptojs
來嘗試和比較加密字符串。如何正確比較加密的密碼字符串?
我相信我的問題是因爲我隨機生成我的密鑰和iv。你們都對我可以改變什麼有什麼建議嗎?
app.post('/authenticate',function(req,res){
conn.open(connString, function(err){
if(err) return console.log(err);
var loginID = req.body.LoginID,
passWord = req.body.PassWord;
//-------------------------Security---------------------------
// create random Word Arrays for key and Salt
var key = CryptoJS.lib.WordArray.random(16);
var iv = CryptoJS.lib.WordArray.random(16);
// Encrypt Password using key and Salt. Changes every time but will always decrypt to same password.
var encrypted = CryptoJS.AES.encrypt(passWord, key, { iv: iv }).toString();
var decrypted = CryptoJS.AES.decrypt(encrypted, key, { iv: iv }).toString();
console.log(decrypted);
//-------------------------END Security------------------------
conn.query("SELECT PassWord from pub.User WHERE LoginID ='" + loginID + "'",function(err,data){
if(err) return console.log(err);
res.json(data);
setValue(data);
function setValue(value) {
someVar = value;
}
for(key in someVar) {
if(someVar.hasOwnProperty(key)) {
var value = someVar[key];
console.log(value.PassWord);
console.log(encrypted);
if(value.PassWord == encrypted)
{
console.log("pass");
}
else
{
console.log("Fail");
}
}
}
conn.close(function(){
console.log('Login Complete');
});
}); // conn.query
}); //END conn.open(connString, function(err){
}); // END app.post('/authenticate'
謝謝你,
你應該使用類似bcrypt/pbkdf2/scrypt的東西來代替密碼。 – mscdex