Node.jsでBase64エンコードする
Node.jsでBase64エンコーディングする方法
Node.jsでBase64エンコーディングを行うには、標準のBuffer
クラスを使用します。
Bufferオブジェクトの作成
まず、エンコードしたいデータをBuffer
オブジェクトに変換します。
const data = 'Hello, world!';
const buffer = Buffer.from(data, 'utf8');
Base64エンコード
buffer.toString()
メソッドを使用して、'base64'
エンコーディングを指定することで、Base64エンコードされた文字列を取得します。
const encodedData = buffer.toString('base64');
console.log(encodedData); // Output: "SGVsbG8sIHdvcmxkIQ=="
Base64エンコードされた文字列をデコードするには、Buffer.from()
メソッドにBase64エンコードされた文字列と'base64'
エンコーディングを指定します。
const decodedData = Buffer.from(encodedData, 'base64').toString('utf8');
console.log(decodedData); // Output: "Hello, world!"
便利なモジュール
より複雑なエンコーディングやデコーディングが必要な場合は、crypto
モジュールを使用することもできます。
const crypto = require('crypto');
const encodedData = crypto.createHash('sha256').update('Hello, world!').digest('base64');
console.log(encodedData); // Output: "b9200000b8010848f8a0000000000000000000000000000000000000"
例1: 標準のBuffer
クラスを使用する
const data = 'Hello, world!';
const buffer = Buffer.from(data, 'utf8'); // UTF-8エンコーディングでバッファを作成
const encodedData = buffer.toString('base64');
console.log(encodedData); // Output: "SGVsbG8sIHdvcmxkIQ=="
例2: crypto
モジュールを使用する
const crypto = require('crypto');
const encodedData = crypto.createHash('sha256').update('Hello, world!').digest('base64');
console.log(encodedData); // Output: "b9200000b8010848f8a0000000000000000000000000000000000000"
コードの説明
例1
Buffer.from(data, 'utf8')
: 文字列data
をUTF-8エンコーディングでバッファに変換します。buffer.toString('base64')
: バッファをBase64エンコードされた文字列に変換します。
例2
crypto.createHash('sha256')
: SHA-256ハッシュアルゴリズムを作成します。.update('Hello, world!')
: ハッシュアルゴリズムにデータを更新します。.digest('base64')
: ハッシュ値をBase64エンコードされた文字列に変換します。
備考
crypto
モジュールは、暗号化やハッシュアルゴリズムを提供します。Buffer
クラスは、Node.jsでバイナリデータを扱うための基本的なクラスです。- Base64エンコードは、バイナリデータをテキスト形式に変換する手法です。
node-base64モジュール
外部モジュールであるnode-base64
を使用することもできます。
const base64 = require('node-base64');
const encodedData = base64.encode('Hello, world!');
console.log(encodedData); // Output: "SGVsbG8sIHdvcmxkIQ=="
atobとbtoa関数 (ブラウザ環境)
Node.jsのブラウザ環境では、atob
とbtoa
関数を直接使用することができます。
const encodedData = btoa('Hello, world!');
console.log(encodedData); // Output: "SGVsbG8sIHdvcmxkIQ=="
自作関数
Base64エンコードのアルゴリズムを直接実装することもできますが、一般的には標準のBuffer
クラスや外部モジュールを使用することを推奨します。
- 自作関数を実装する場合は、アルゴリズムの正確性とパフォーマンスに注意が必要です。
atob
とbtoa
関数はブラウザ環境でのみ使用できます。node-base64
モジュールは、より柔軟なオプションを提供する場合があります。
node.js encoding base64