1. ホーム
  2. node.js

[解決済み】NodeJS:Base64エンコードされた文字列をバイナリにデコードする方法は?[重複している]をクリックします。

2022-03-26 14:53:31

質問

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

今、私がパスワードをチェックするとき、私はソルトをバイナリデータにデコードし、それを使って与えられたパスワードをハッシュ化し、その結果をbase64エンコードし、その結果がデータベースのものと一致するかどうかをチェックすることになっているのです。

問題は、ソルトをバイナリデータにデコードする方法が見つからないことです。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 パス '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
}