328

私はソルトでパスワードハッシュを実装していたので、ソルトをバイナリとして生成し、パスワードをハッシュし、パスワードをbase64でエンコードし、ソルトをデータベースに保存しました。

パスワードをチェックするときは、salt をデコードしてバイナリ データに戻し、それを使用して提供されたパスワードをハッシュし、結果を base64 エンコードして、結果がデータベースのものと一致するかどうかを確認します。

問題は、ソルトをデコードしてバイナリ データに戻す方法が見つからないことです。Buffer.toString メソッドを使用してエンコードしましたが、逆関数はないようです。

4

1 に答える 1

716

Node.js v6.0.0 以降、コンストラクター メソッドを使用することは推奨されなくなりました。代わりに、次のメソッドを使用して、base64 でエンコードされた文字列から新しいバッファーを構築する必要があります。

var b64string = /* whatever */;
var buf = Buffer.from(b64string, 'base64'); // Ta-da

Node.js v5.11.1 以下の場合

Buffernewを構築し、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
}
于 2013-01-28T23:17:22.160 に答える