Base64 エンコード・デコードを行う方法
ここでは TypeScript で Base64 エンコード行う方法について説明します。
Base64 とは?ざっくり言うとどんなデータも特定の文字に置き換える方法
Base64 は基本的にバイナリーデータを文字列に置き換える方法です。
しかし、どんなデータでもわずか 64 種類のわかりきった文字の集合に置き換えてくれるので扱いやすく、 バイナリーデータの変換だけでなく文字列から文字列の変換などにも使われたりします。
例えば、HTTP の基本認証ではユーザー名とパスワードの組み合わせを HTTP ヘッダ (Authorization ヘッダ) に設定することになっています。 このときにパスワードには様々な記号も受け付けなければいけないので、なんでもセットできるように "ユーザー名:パスワード" という組み合わせを作ったら、 それを Base64 エンコードすることになっています。
念のため、基本認証について補足すると "ユーザー名:パスワード" という組み合わせになるので、 ユーザー名にはコロン (:) は使えないことになってます。そのため、サーバー側では Base64 をデコードして最初に出現したコロンをユーザー名とパスワードの区切りとします。
TypeScript で Base64 を行う方法
buffer を利用して Base64 のエンコードおよびデコードを行う例は次の通りです。
import { Buffer } from 'buffer';
const org = 'user1:password-goes-here!';
console.log( `original = ${org}`);
let s = Buffer.from(org).toString('base64') ;
console.log( `base64 = ${s}` ) ;
s = Buffer.from(s, 'base64').toString();
console.log( `decoded = ${s}` );
この実行結果は次にのようになります。
original = user1:password-goes-here! base64 = dXNlcjE6cGFzc3dvcmQtZ29lcy1oZXJlIQ== decoded = user1:password-goes-here!
ちゃんと、エンコードした文字列から元の文字列に戻ったことが確認できました。
以上、ここでは buffer を利用して Base64 エンコードおよびデコードする方法について、コード例を紹介しました。