私はsaltを使ってパスワードハッシュを実装していたので、バイナリとしてsaltを生成し、パスワードをハッシュし、パスワードをbase64でエンコードし、それからそれらをデータベースに保存しました。
パスワードをチェックするときに、saltをバイナリデータにデコードし、それを使用して提供されたパスワードをハッシュし、結果をbase64でエンコードして、結果がデータベース内のものと一致するかどうかを確認します。
問題は、saltをバイナリデータに復号化する方法が見つからないことです。 Buffer.toStringメソッドを使ってそれらをエンコードしましたが、逆の機能はないようです。
Node.js v6.0.0では を使用しているため、コンストラクタメソッドは推奨されなくなり 、次のメソッドを使用する必要があります。代わりに、base64でエンコードされた文字列から新しいバッファを構築するために使用されます。
var b64string = /* whatever */;
var buf = Buffer.from(b64string, 'base64'); // Ta-da
Node.js v5.11.1以前の場合
新しいBuffer
を作成し、 2番目の引数として'base64'
を渡します。
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
}