NodeJS: base64 でエンコードされた文字列をバイナリにデコードするにはどうすればいいですか? [重複] 質問する

NodeJS: base64 でエンコードされた文字列をバイナリにデコードするにはどうすればいいですか? [重複] 質問する

私はソルトを使用してパスワード ハッシュを実装していたので、ソルトをバイナリとして生成し、パスワードをハッシュし、パスワードとソルトを 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
}

おすすめ記事