Node.js Base64デコード方法
Node.jsでBase64エンコードされた文字列をバイナリに戻す方法
Node.jsでは、Buffer
オブジェクトを使用してBase64エンコードされた文字列をバイナリに戻すことができます。
Bufferオブジェクトのメソッドを使用する
const Buffer = require('buffer').Buffer;
// Base64エンコードされた文字列
const base64String = 'SGVsbG8gV29ybGQ=';
// Base64をデコードしてバイナリに変換
const binaryData = Buffer.from(base64String, 'base64');
console.log(binaryData); // <Buffer 48 65 6c 6c 6f 20 57 6f 72 6c 64>
child_processモジュールを使用して外部コマンドを使用する
const { exec } = require('child_process');
// Base64エンコードされた文字列
const base64String = 'SGVsbG8gV29ybGQ=';
// `base64`コマンドを使用してデコード
exec(`echo "${base64String}" | base64 -d`, (err, stdout, stderr) => {
if (err) {
console.error(err);
return;
}
console.log(stdout); // <Buffer 48 65 6c 6c 6f 20 57 6f 72 6c 64>
});
cryptoモジュールを使用する
const crypto = require('crypto');
// Base64エンコードされた文字列
const base64String = 'SGVsbG8gV29ybGQ=';
// `crypto`モジュールを使用してデコード
const binaryData = crypto.createDecipher('aes-256-cbc', 'password').update(base64String, 'base64', 'binary');
console.log(binaryData); // <Buffer 48 65 6c 6c 6f 20 57 6f 72 6c 64>
注意
Buffer
オブジェクトは、バイナリデータを操作するための便利なクラスです。さまざまなメソッドを使用して、バイナリデータの変換や操作を行うことができます。- 最後の例では、
crypto
モジュールを使用して暗号化/復号化を行っていますが、実際にはBase64のデコードのみを行っています。暗号化/復号化の具体的な実装方法は、使用するアルゴリズムとキーによって異なります。
const Buffer = require('buffer').Buffer;
// Base64エンコードされた文字列
const base64String = 'SGVsbG8gV29ybGQ=';
// Base64をデコードしてバイナリに変換
const binaryData = Buffer.from(base64String, 'base64');
console.log(binaryData); // <Buffer 48 65 6c 6c 6f 20 57 6f 72 6c 64>
解説
- 変換されたバイナリデータは、
binaryData
変数に格納されます。 - 第2引数に
'base64'
を指定することで、Base64デコードを指定します。 Buffer.from()
メソッドを使用して、Base64エンコードされた文字列をバイナリに変換します。Buffer
オブジェクトは、バイナリデータを扱うためのNode.jsのクラスです。
const { exec } = require('child_process');
// Base64エンコードされた文字列
const base64String = 'SGVsbG8gV29ybGQ=';
// `base64`コマンドを使用してデコード
exec(`echo "${base64String}" | base64 -d`, (err, stdout, stderr) => {
if (err) {
console.error(err);
return;
}
console.log(stdout); // <Buffer 48 65 6c 6c 6f 20 57 6f 72 6c 64>
});
- デコードされた結果が
stdout
に格納され、コンソールに出力されます。 - コマンドでは、
echo
コマンドを使用してBase64エンコードされた文字列を出力し、パイプ (|)
でbase64 -d
コマンドに渡してデコードします。 exec()
メソッドを使用して、コマンドを実行し、その結果をコールバック関数で処理します。child_process
モジュールを使用して、外部のコマンド(base64
コマンド)を実行します。
const crypto = require('crypto');
// Base64エンコードされた文字列
const base64String = 'SGVsbG8gV29ybGQ=';
// `crypto`モジュールを使用してデコード
const binaryData = crypto.createDecipher('aes-256-cbc', 'password').update(base64String, 'base64', 'binary');
console.log(binaryData); // <Buffer 48 65 6c 6c 6f 20 57 6f 72 6c 64>
- 第3引数に
'base64'
を指定することで、Base64デコードを指定し、第4引数に'binary'
を指定することで、バイナリ形式で結果を取得します。 - 第1引数に暗号化アルゴリズム(
aes-256-cbc
)、第2引数に復号鍵(password
)を指定します。 - ここでは、
createDecipher()
メソッドを使用して復号器を作成し、update()
メソッドを使用してBase64エンコードされた文字列を復号します。 crypto
モジュールを使用して、暗号化/復号化を行います。
atob()関数を使用する
// Base64エンコードされた文字列
const base64String = 'SGVsbG8gV29ybGQ=';
// atob()関数を使用してデコード
const binaryString = atob(base64String);
// バイナリ文字列をバッファに変換
const binaryData = Buffer.from(binaryString, 'binary');
console.log(binaryData); // <Buffer 48 65 6c 6c 6f 20 57 6f 72 6c 64>
- しかし、Node.jsのブラウザ環境エミュレータや、Webブラウザの拡張機能を使用することで、
atob()
関数をNode.jsで利用することができます。 - Node.jsでは、グローバルスコープに存在しないため、直接使用することはできません。
atob()
関数は、ブラウザ環境でBase64エンコードされた文字列をデコードするために使用される関数です。
外部ライブラリを使用する
Node.jsのパッケージマネージャーであるnpmには、Base64エンコード/デコードの機能を提供するさまざまなライブラリが存在します。これらのライブラリを使用することで、より簡潔なコードでBase64エンコードされた文字列をバイナリに戻すことができます。
例:base64url
ライブラリを使用する
const base64url = require('base64url');
// Base64エンコードされた文字列
const base64String = 'SGVsbG8gV29ybGQ=';
// `base64url`ライブラリを使用してデコード
const binaryData = Buffer.from(base64url.decode(base64String));
console.log(binaryData); // <Buffer 48 65 6c 6c 6f 20 57 6f 72 6c 64>
decode()
メソッドを使用して、Base64エンコードされた文字列をデコードし、その結果をBuffer
オブジェクトに変換します。base64url
ライブラリは、Base64エンコード/デコードの機能を提供するライブラリの1つです。
node.js encoding base64