Base64をデコードする方法: ツール、メソッド、コード例
Base64をデコードする方法: クイックメソッド
base64は、バイナリデータをASCII文字列として表現するバイナリ-テキスト変換エンコーディングです。デコードすると、base64テキストが元のデータに戻ります。最も迅速な方法を以下に紹介します。
方法 | 最適な用途 | スキルレベル |
|---|---|---|
手軽な一回限りのデコード | コーディング不要 | |
JavaScript (atob / Buffer) | ブラウザとNode.jsアプリ | 基本的なJavaScript |
Python (base64モジュール) | スクリプトと自動化 | 基本的なPython |
コマンドライン (base64) | シェルスクリプト | CLIの基礎知識 |
base64エンコーディングとは
base64は、64種類の印刷可能なASCII文字(A-Z、a-z、0-9、+、/)を使用してバイナリデータをテキスト形式に変換するエンコーディングスキームです。これは暗号化ではありません。base64はセキュリティを提供しません。テキストのみのチャネルを通じてバイナリデータを送信する必要があるときに使用されます。
仕組み:
元データ: "Hello" バイナリ: 01001000 01100101 01101100 01101100 01101111 base64: SGVsbG8=
エンコード: 入力3バイト - base64の4文字 パディング: 最後のグループが足りない場合は=記号で埋める
base64の一般的な用途:
メール添付ファイル: MIMEエンコーディングがテキストベースのメールプロトコルを通じてバイナリファイルを送信します
データURI: HTML/CSSに直接画像を埋め込む(
data:image/png;base64,...)APIペイロード: JSON APIリクエストでバイナリデータ(画像、ファイル)を送信する
認証: HTTP Basic Authがbase64でクレデンシャルをエンコードする(username:password)
JWTトークン: JSON Web TokensはヘッダーとペイロードにBase64URLエンコーディングを使用する
Qodexの無料base64エンコーダーでデータをエンコードするか、base64デコーダーでデコードをお使いください。
方法1: 無料のオンラインデコーダー(コード不要)
base64をデコードする最も速い方法は、Qodexの無料base64デコーダーを使用することです。
base64エンコードされた文字列を貼り付けます
デコードをクリックすると、元のテキストまたはバイナリデータが即座に表示されます
デコードされた出力をコピーするか、ファイルとしてダウンロードします
テキスト文字列、エンコードされたファイル、JWTペイロード、データURIに対応しています。アカウント不要です。
方法2: JavaScriptを使用する
JavaScriptはブラウザとNode.jsの両方の環境でbase64デコードの組み込み機能を提供しています。
ブラウザ(atob)
// base64を文字列にデコードする const decoded = atob("SGVsbG8gV29ybGQ="); console.log(decoded); // "Hello World"
// base64をバイナリにデコードする(ファイル/画像の場合) const base64 = "iVBORw0KGgo..."; // base64画像 const binary = atob(base64); const bytes = new Uint8Array(binary.length); for (let i = 0; i < binary.length; i++) { bytes[i] = binary.charCodeAt(i); } const blob = new Blob([bytes], { type: "image/png" });
Node.js(Buffer)
// base64を文字列にデコードする const decoded = Buffer.from("SGVsbG8gV29ybGQ=", "base64").toString("utf-8"); console.log(decoded); // "Hello World"
// base64をファイルにデコードする const fs = require("fs"); const base64Data = "iVBORw0KGgo..."; fs.writeFileSync("image.png", Buffer.from(base64Data, "base64"));
注意: JWTで使用されるURL安全なbase64(Base64URL)の場合は、デコード前に-を+に、_を/に置き換えるか、Node.js 16以降でBuffer.from(data, "base64url")を使用してください。
方法3: Pythonを使用する
Pythonの組み込みbase64モジュールはすべてのbase64操作を処理します。
import base64# base64を文字列にデコードする encoded = "SGVsbG8gV29ybGQ=" decoded = base64.b64decode(encoded).decode("utf-8") print(decoded) # "Hello World"
# base64をファイルにデコードする with open("image.png", "wb") as f: f.write(base64.b64decode(base64_image_data))
# URL安全なbase64(JWTの場合) decoded = base64.urlsafe_b64decode(jwt_payload + "==") # 必要に応じてパディングを追加
よくある落とし穴: base64文字列の長さは4の倍数でなければなりません。パディング(=)が除去されている場合(JWTやURLでよく見られます)は、data += "=" * (4 - len(data) % 4)で追加してください。
方法4: コマンドラインを使用する
すべてのUnix系システムにはbase64コマンドが含まれています。
# 文字列をデコードする echo "SGVsbG8gV29ybGQ=" | base64 --decode # 出力: Hello World# ファイルをデコードする base64 --decode encoded.txt > decoded.bin
# macOSの構文(若干異なります) echo "SGVsbG8gV29ybGQ=" | base64 -D
# クリップボードからデコードする(macOS) pbpaste | base64 --decode
Windows PowerShellの場合:
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("SGVsbG8gV29ybGQ="))
base64デコードの一般的なユースケース
JWTトークンのデコード
JWT(JSON Web Token)のペイロードはBase64URLエンコードされたJSONオブジェクトです。デコードするとクレームが明らかになります。
# JWTの構造: header.payload.signature
# ペイロード(中間部分)をデコードする
echo "eyJ1c2VyIjoiYWxpY2UiLCJyb2xlIjoiYWRtaW4ifQ" | base64 --decode
# {"user":"alice","role":"admin"}
埋め込み画像の表示
HTMLのデータURIはbase64エンコードされた画像を埋め込みます。デコードすると、編集や最適化のために画像ファイルを抽出できます。
APIリクエストのデバッグ
HTTP Basic認証はbase64でクレデンシャルを送信します: Authorization: Basic dXNlcjpwYXNz。デコードするとuser:passが明らかになります。これがHTTP(HTTPSではない)上でのBasic認証が安全でない理由です。クレデンシャルは暗号化されずにエンコードされているだけです。APIセキュリティのためには必ずHTTPSを使用してください。
メール添付ファイルの復元
メール添付ファイルはbase64でMIMEエンコードされています。生のメールソースから添付ファイルを抽出する必要がある場合は、base64ブロックをデコードして元のファイルを復元します。
よくある質問
base64エンコーディングは暗号化と同じですか?
いいえ。base64はエンコーディングであり、暗号化ではありません。セキュリティは一切提供しません。誰でも即座にbase64文字列をデコードできます。base64はテキストのみのチャネル(メール、JSON、URL)を通じて送信するためにバイナリデータをテキスト形式に変換するだけです。パスワードやAPIキーなどの機密データを「保護」するためにbase64を使用しないでください。実際のセキュリティには、適切な暗号化(AES、RSA)またはハッシュ化(SHA-256)を使用してください。
base64はなぜデータが約33%大きくなるのですか?
base64はバイナリデータの3バイトごとに4つのASCII文字に変換します。この3:4の比率により、base64エンコードされたデータは元のデータより約33%大きくなります。このトレードオフは、テキストのみのチャネルを通じてバイナリデータを送信する必要があるときには価値があります。サイズが問題になる場合は、base64エンコード前にデータを圧縮するか、より効率的なバイナリ転送方法の使用を検討してください。
Base64URLとは何ですか?標準のbase64とどう違いますか?
Base64URLは標準のbase64から2つの文字を置き換えます。+が-に、/が_になります。これにより、+と/が特別な意味を持つURLやファイル名での使用が安全になります。Base64URLはパディング(=)も省略するのが一般的です。JWTや多くのWeb APIは標準base64の代わりにBase64URLを使用しています。
Webブラウザでbase64をデコードするにはどうすればよいですか?
JavaScriptの組み込みatob()関数を使用してください: atob("SGVsbG8=")は"Hello"を返します。JWTで使用されるBase64URL(URL安全な文字)をデコードするには、まずURL安全な文字を置き換えてください: atob(str.replace(/-/g, '+').replace(/_/g, '/'))。コーディングなしのアプローチには、ブラウザでQodexの無料base64デコーダーを直接ご利用ください。
base64は任意のバイナリファイルをデコードできますか?
はい。base64は画像、PDF、実行ファイル、アーカイブなど、あらゆるバイナリデータをエンコード・デコードできます。プロセスは可逆的です。エンコードはバイトをテキストに変換し、デコードはテキストを元のバイトに正確に変換します。JavaScriptでは、バイナリファイルにBlobとUint8Arrayを使用します。Pythonでは、open('file', 'wb')でデコードされたバイトを書き込みます。
"invalid Base64"エラーの原因は何ですか?
一般的な原因: パディング文字(=)の欠落(文字列の長さが4の倍数になるように追加してください)、無効な文字(base64はA-Z、a-z、0-9、+、/、=のみを許可します。Base64URLの場合は-、_を使用します)、改行またはホワイトスペース(デコード前にすべてのホワイトスペースを除去してください)、base64とBase64URLの混同(デコーダーに合った正しいアルファベットを使用していることを確認してください)。
Discover, Test, & Secure your APIs 10x Faster than before
Auto-discover every endpoint, generate functional & security tests (OWASP Top 10), auto-heal as code changes, and run in CI/CD - no code needed.
Related Blogs





