私はソルトを使用してパスワード ハッシュを実装していたので、ソルトをバイナリとして生成し、パスワードをハッシュし、パスワードとソルトを base64 でエンコードして、データベースに保存しました。
ここで、パスワードをチェックするときに、ソルトをバイナリ データにデコードし、それを使用して提供されたパスワードをハッシュし、結果を base64 でエンコードして、結果がデータベース内のものと一致するかどうかを確認する必要があります。
問題は、ソルトをバイナリ データにデコードする方法が見つからないことです。 Buffer.toString メソッドを使用してエンコードしましたが、逆関数はないようです。
ベストアンサー1
Node.js v6.0.0以降ではコンストラクタメソッドは非推奨になりました代わりに、次のメソッドを使用して、base64 でエンコードされた文字列から新しいバッファーを構築する必要があります。
var b64string = /* whatever */;
var buf = Buffer.from(b64string, 'base64'); // Ta-da
Node.js v5.11.1 以下の場合
新しいものを構築しBuffer
、'base64'
2番目の引数として渡します:
var b64string = /* whatever */;
var buf = new Buffer(b64string, 'base64'); // Ta-da
クリーンにしたい場合は、以下がfrom
存在するかどうかを確認できます。
if (typeof Buffer.from === "function") {
// Node 5.10+
buf = Buffer.from(b64string, 'base64'); // Ta-da
} else {
// older Node versions, now deprecated
buf = new Buffer(b64string, 'base64'); // Ta-da
}