Base64データをQRコードにエンコードする

バイナリコンテンツ転送のためにBase64エンコードされたデータを含むQRコードの生成方法。エンコーディング戦略、サイズオーバーヘッド、Data URI埋め込み、証明書と鍵の配布のユースケースをカバーします。

Technical

詳細な説明

Base64データ用QRコード

Base64エンコーディングはバイナリデータをASCIIテキストに変換し、QRコードと互換性を持たせます。これにより、QRコードで小さなファイル、暗号鍵、圧縮データなどのバイナリペイロードを運ぶことができます。

なぜQRコードでBase64を使うのか?

QRコードはテキストデータを格納します。バイナリコンテンツを埋め込むには、テキストセーフなエンコーディングが必要です:

  • Base64 — 標準エンコーディング、33%のサイズオーバーヘッド
  • Base64url — URLセーフバリアント、+/-_ に置換、パディングなし

小さなファイルのエンコード

小さな設定ファイルや証明書の場合:

data:application/json;base64,eyJrZXkiOiJ2YWx1ZSIsIm51bSI6NDJ9

受信アプリケーションがBase64文字列をバイナリにデコードします:

const decoded = atob("eyJrZXkiOiJ2YWx1ZSIsIm51bSI6NDJ9");
// 結果: {"key":"value","num":42}

サイズの制約

Base64には33%のオーバーヘッドがあります — 3バイトのバイナリが4文字のBase64テキストになります。QRコードの容量制限と組み合わせると:

QRバージョン エラー訂正M バイナリ容量 Base64容量
10 (57x57) ~652文字 ~489バイト ~652文字
20 (97x97) ~1,460文字 ~1,095バイト ~1,460文字
40 (177x177) ~3,391文字 ~2,543バイト ~3,391文字

実用的な制限

スマートフォンカメラでの確実なスキャンのために、QRバージョン15-20(約1,000-1,500 Base64文字)以内に収めてください。より大きなコードは高解像度の印刷と近距離スキャンが必要です。

Data URIフォーマット

Base64とData URIを組み合わせて自己記述型ペイロードを作成:

data:<mediatype>;base64,<data>

一般的なメディアタイプ:

  • application/json — 設定データ
  • application/x-pem-file — 証明書
  • application/octet-stream — 汎用バイナリ

Base64 QRコードのユースケース

  1. 証明書配布 — 小さなX.509証明書や公開鍵の共有
  2. 圧縮データ — JSONをGzip圧縮後、結果をBase64エンコード
  3. 小さな画像 — 小さなアイコンやアバターのエンコード(1KB未満)
  4. 暗号化ペイロード — Base64としてエンコードされたAES暗号化データ
  5. 設定ブロブ — コンパクトなバイナリフォーマットのデバイス設定

ユースケース

Base64 QRコードは、小さな暗号証明書の配布、SSH公開鍵の共有、エアギャップシステム間での圧縮設定ファイルの転送、ネットワーク接続が利用できないIoTデバイスプロビジョニングのための小さなバイナリペイロードのエンコードに使用されます。

試してみる — QR Code Generator

フルツールを開く