2016-07-05 26 views
0

javascriptとnodejsの新機能で、パスワードとデータベースのsaltからユーザーを認証するコードを作成しました。以下は、ユーザーコードとパスワードを受け取ったnodejsのコードです私はデータベースからデータを取得し、DBにあるパスワードとソルトを受信したパスワードと比較します。無効なsalt nodejsの認証プロセスでエラーが発生しました

DBに格納された塩は、base64形式で生成されます。 、オーバーこのエラーをどのように塩または私はコード内で欠落している可能性があり、他のラウンド数を見つけることができませんでし来てそのコード

passwordinDB : StAxL1r3bb/5k/6D6+BulwxhXFs= 
saltinDB : FOhs8crXyO8= 
    [Error: Invalid salt. Salt must be in the form of: $Vers$log2(NumRounds)$saltvalue] 

をececutingながら

var Bcrypt = require('bcrypt'); 
var pg = require('pg'); 
var usercode = 'tarun'; 
var clientid='214057357158656'; 
var password='tarun'; 
var connectionString = "postgres://dbusername:[email protected]:5432/USCProduction"; 
console.log('connectin to DB'); 
var client = new pg.Client(connectionString); 
client.connect(function(err) { 

    if(err) { 
     console.log(err); 
     } 
    var Query ='select password, salt from muser, mclient where usercode='+"'"+usercode+"'"+' and muser.clientid='+clientid+' and muser.clientid=mclient.clientid and mclient.status=1'; 
    console.log('executing query',Query); 
    client.query(Query, function(err, result) { 

    if(err){ 
     console.log('Error in executing Query'); 
     client.end(); 
    } else { 
     console.log(result.rows); 
     var passinDB=result.rows[0].password; 
     var saltinDB=result.rows[0].salt; 
     console.log('passwordinDB : ',passinDB); 
     console.log('saltinDB : ',saltinDB); 
client.end(); 
    Bcrypt.hash(passinDB, saltinDB, function(err, hash) { 
     if(err) { 
       return console.error(err); 
     } 
     console.log(hash); 
    Bcrypt.compare(password, hash, function(err, isMatch) { 
     if(err) { 
       return console.error(err); 
     } 
     console.log('do they match?', isMatch); 
    }); 

}); 
    } 
    }); 
}); 

アム以下のエラーが直面しています。

ありがとうございます!

答えて

0
この行に

塩水の形でなければならない:$ Versに$のLOG2(NumRounds)の$ saltvalue]

$ Versに
の$ LOG2を(bcrypt_idれますNumRounds)は、その内部ハッシュ関数を何回実行するかを指示するパラメータです。

ですから、塩を生成する必要があり、このようにパスワードを持っています

var bcrypt = require('bcryptjs'); 
 
bcrypt.genSalt(10, function(err, salt) { 
 
    bcrypt.hash("any_password", salt, function(err, hash) { 
 
     // Store hash in your password DB. 
 
    }); 
 
});

herehere

続きを読みます
関連する問題