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コードのユースケース
- 証明書配布 — 小さなX.509証明書や公開鍵の共有
- 圧縮データ — JSONをGzip圧縮後、結果をBase64エンコード
- 小さな画像 — 小さなアイコンやアバターのエンコード(1KB未満)
- 暗号化ペイロード — Base64としてエンコードされたAES暗号化データ
- 設定ブロブ — コンパクトなバイナリフォーマットのデバイス設定
ユースケース
Base64 QRコードは、小さな暗号証明書の配布、SSH公開鍵の共有、エアギャップシステム間での圧縮設定ファイルの転送、ネットワーク接続が利用できないIoTデバイスプロビジョニングのための小さなバイナリペイロードのエンコードに使用されます。