ファイルを選択
  1. base64hub
  2. その他の基数
  3. Base32 を Base64 に

Base32 を Base64 に変換

認証アプリの設定キーなどの Base32 文字列を貼り付けると、同じバイト列を標準の Base64 で得られます。グループ分けされた入力、小文字、パディングなしの入力もそのまま受け付けます。

無料 登録不要・制限なし ローカル アップロードなし 大文字小文字を問わない 空白やパディングの欠落も可 更新日 2026/10/27
入力 0バイト 0 B出力 0

ブラウザ内で処理されます。このページがデータをどこかに送信することはできません – その根拠

Base32 を Base64 に変換する方法

  1. 入力 · Base32(RFC 4648)に Base32 を貼り付けます。グループ間の空白、小文字、= の欠落はどれも問題ありません。
  2. 出力 · Base64 で Base64 を確認します。送り先が = を求めない場合は出力の下のパディング(=)のチェックを外し、長い値なら折り返しを設定します。
  3. 出力をコピーします。方向の切り替えで Base64 → Base32(RFC 4648)を選ぶと逆方向に戻せます。Base64 を Base32 にでも同じです。

例

Base32Base64備考
JBSWY3DPEHPK3PXPSGVsbG8h3q2+7w==Google Authenticator のキー URI ドキュメントにある例のキー、10 バイト
jbsw y3dp ehpk 3pxpSGVsbG8h3q2+7w==同じキーを、アプリが表示するようにグループ分けしたもの
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQMTIzNDU2Nzg5MDEyMzQ1Njc4OTA=RFC 6238 のテスト用シークレット、ASCII の数字 20 桁
RBGA56K5GUXFZY3PQMYQKS3ACLQI2W6KiEwO+V01Llzjb4MxBUtgEuCNW8o=ランダムに見える 20 バイト
MZXW6YQZm9vYg==パディングなしの入力。パディング付きなら MZXW6YQ=

最初のキーをデコードするとバイト列 48 65 6c 6c 6f 21 de ad be ef になります。Hello! という単語に de ad be ef が続いたものです。その Base64 が Hello! の Base64 である SGVsbG8h で始まるのはこのためです。

2 段階認証のシークレットを Base64 に変換する理由

Base32 の形は人間のためにあります。QR コードや設定画面に載せ、スマートフォンで入力できるようにするものです。一方、コードや設定ファイルが求めるのはたいてい生の鍵で、JSON、YAML、環境変数、データベースに生のバイト列を保存する一般的な方法が Base64 です。典型的なケース:

  • エクスポートした otpauth:// リンクの一覧から、シークレットを Base64 で保存するシステムへ TOTP アカウントを移す。
  • 自前のサーバーでコードを検証する場合など、Base64 やバイト列を受け取る HMAC の関数やライブラリに鍵を渡す。
  • シークレットの 2 つのコピーを比較する。同じ Base32 なら、グループ分け、大文字小文字、パディングが違っても Base64 は 1 つの文字列になるので、出力が同じなら鍵も同じです。

Base64 のシークレットは Base32 のものとまったく同じだけ機密性が高いので、パスワードを保管するような場所に保管してください。

Python で Base32 を Base64 に変換する

Python の b32decode は大文字小文字とパディングに厳格なので、先に文字列を正規化します。

import base64

def b32_to_b64(secret):
    s = secret.replace(" ", "").upper()
    s += "=" * (-len(s) % 8)
    return base64.b64encode(base64.b32decode(s)).decode()

b32_to_b64("jbsw y3dp ehpk 3pxp")    # 'SGVsbG8h3q2+7w=='

.upper() の呼び出しがないと Python は binascii.Error: Non-base32 digit found を出し、パディングの行がないと Incorrect padding を出します。Base64 側については Python での Base64 をご覧ください。

よくある問題

  • 9、8、1、0 の位置でエラーになる。 これらの数字は RFC 4648 の Base32 にはありません。値はおそらく base32hex か Crockford です。たとえば 91IMOR3F はここでは位置 1 で失敗します。正しい変換元のアルファベットを選んで Base32 デコーダーでデコードしてください。
  • - の位置でエラーになる。 キーをハイフンで区切って表示するサイトがあります。ハイフンを取り除いてください。読み飛ばされるのは空白だけです。
  • Base64 は正しいのにサーバーがコードを拒否する。 他のパラメーターを確認してください。アルゴリズム、桁数、周期が両側で一致している必要があり、サーバーの時計がスマートフォンの時計とほぼ合っている必要もあります。

よくある質問

Google Authenticator のキーを Base64 に変換するにはどうすればいいですか?

otpauth:// リンクの secret= パラメーターからキーを取り出し(または QR コードの下に表示されるテキストのキーを使い)、ここに貼り付けます。JBSWY3DPEHPK3PXP は SGVsbG8h3q2+7w== になります。

Base64 のほうが Base32 より短いのはなぜですか?

Base64 は 1 文字に 6 ビット、Base32 は 5 ビットを格納するので、同じバイト列でも Base64 のほうが少ない文字数で済みます。20 バイトは Base32 では 32 文字ですが、Base64 では 28 文字です。

base32hex や Crockford Base32 もここで変換できますか?

このページが読むのは RFC 4648 の Base32 だけです。Base32 デコーダーを開き、変換元を Base32hex か Crockford Base32 に、変換先を Base64 にしてください。

コマンドラインで Base32 を Base64 に変換するには?

GNU coreutils なら printf 'JBSWY3DPEHPK3PXP' | base32 -d | base64 です。入力は空白なしの大文字である必要があるので、先に tr -d ' ' | tr a-z A-Z で整えてください。