メインコンテンツへスキップ

← ブログ一覧へ

Base64 は暗号化?エンコードと暗号化の違いを解説

ソフトウェアの世界で最もよくある誤解の一つです。cGFzc3dvcmQ= のような文字列を見て、データが「暗号化されている」と思い込む——実はそうではありません。Base64 はエンコードであって暗号化ではなく、この二つを混同すると本当のセキュリティ上のミスにつながります。はっきりさせましょう。

Base64 が実際にすること

Base64 は任意のバイト列を 64 種類の印字可能な文字(A–Z、a–z、0–9、+/)で表現します。目的は転送です。バイナリや特殊文字を、テキストしか扱えない経路——メール本文、JSON フィールド、Data URI、JWT のセグメントなど——で運べるようにします。

重要なのは、Base64 には鍵も秘密もないことです。誰でも一瞬で元に戻せます。試しに cGFzc3dvcmQ=Base64 ツールに貼り付けると、すぐに password が返ってきます。

エンコード vs 暗号化

エンコード(Base64)暗号化
目的データを安全に転送するデータを他者に読めなくする
鍵/秘密なしあり——鍵が必要
誰でも復元できる?はい、簡単にいいえ、鍵を持つ者だけ
機密性を提供?❌ いいえ✅ はい

エンコードは表現の話、暗号化は秘匿の話です。両者はまったく別の問題を解決します。

関連概念:ハッシュ

Base64 とハッシュも混同されがちです。ハッシュ(SHA-256 など)は一方向関数で、出力から入力を復元できません。完全性チェックやパスワード保存に使われ、転送用ではありません。実験するなら、当サイトのハッシュ生成ツールで、同じ入力が常に同じ固定長の指紋を生む様子を確認できます。

つまり 3 つの異なる概念があります:

  • エンコード(Base64):誰でも復元可能、転送用。
  • ハッシュ(SHA-256):一方向、完全性用。
  • 暗号化(AES、RSA…):鍵を持つ者だけ復元可能、秘匿用。

避けるべきセキュリティのミス

パスワード、API キー、その他機密の値を「隠す」ために Base64 を使ってはいけません。簡単に復元できるため、機密の保護はゼロです。機密性が必要なら本物の暗号化(例:通信は TLS、保存は AES)を使い、認証情報は適切に保管してください。

Base64 が適している場面

バイナリや特殊データを正当にテキスト経路で運ぶ必要があるとき、Base64 は最適です:

  • 小さな画像を Data URI として HTML や CSS に埋め込む。
  • JWT の各セグメントを確認・組み立てる。
  • JSON API でバイナリデータを渡す。
  • 特殊文字を値に安全に含める。

得意なこと——表現——に使い、秘匿が必要なときは暗号化を選びましょう。UTF-8 に完全対応した無料・ブラウザ動作の Base64 ツールでエンコード・デコードできます。