Base32エンコーダー・デコーダー
Base32は、32個の文字でバイナリデータを表します。数字は2-7の6個、文字は26個の大文字を使い、読み間違いを避けるため0/Oや1/Iは含みません。そのため、人が入力したり声に出して読んだりするものに適しています。2要素認証のTOTPシークレット、バウチャーコード、大文字小文字を区別しない識別子などです。このツールは、RFC 4648に従い、任意のパディング設定でバイナリまたはテキストをBase32へエンコードし、元へデコードします。
Base32をエンコードまたはデコードする方法
-
1
テキストを貼り付けるかファイルをアップロード
入力はバイト列として扱われます。テキスト入力ではUTF-8が標準の解釈です。
-
2
方向を選ぶ
エンコードは生のバイト列をBase32文字列にし、デコードはバイト列を復元します。
-
3
パディングを設定
RFC 4648では、長さが8の倍数になるまで`=`のパディングを指定します。TOTPシークレットや短いトークンではオフにできます。
-
4
結果をコピー
エンコード結果は大文字で、設定に応じてパディングあり・なしになります。
RFC 4648アルファベット
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 2 3 4 5 6 7
0、1、8、9はありません。各文字は5ビット(2^5 = 32)を表すため、入力5バイトが出力8文字になります。
具体例
ASCII文字列foo(バイト列 0x66 0x6F 0x6F = 01100110 01101111 01101111)をエンコードします。
- 5ビットごとのグループに分割:
01100 11001 10111 10110 1111(最後のグループはパディング) - アルファベットに対応付け:
MZXW6 - 8文字にするため
===パディングを追加:MZXW6===
パディングと長さのルール
| 入力バイト数 | 出力文字数 | パディング |
|---|---|---|
| 1 | 8 | ====== |
| 2 | 8 | ==== |
| 3 | 8 | === |
| 4 | 8 | = |
| 5 | 8 | (なし) |
RFC 4648以外のバリエーション
- Base32 Hex - アルファベット
0-9A-V。DNSSECのNSEC3で使われます。 - Crockford’s Base32 - 人の入力に最適化されたアルファベット。デコード時に
O→0、I/L→1を置換します。ULIDや一部のライセンスキーで使われます。
このツールの標準はRFC 4648です。
TOTPシークレット
Google Authenticatorや現代的な2FAアプリで使われるotpauth:// URI形式では、共有シークレットをパディングなしのBase32でエンコードします。「My Service」のQRコードをスキャンすると、secret=パラメータがBase32文字列になっています。このツールでデコードすると、HMACが使う生のバイト列を確認できます。
よくある質問
Base32は大文字小文字を区別せず、似た文字を避けます。人が読む・入力するものではこれが重要です。Base64は同じバイト列に対して短くなりますが、Iとl、0とOを区別する必要があり、手書きや小さい印刷では失敗しやすくなります。
RFC 4648では必須ですが、実際の多くの利用者(TOTPアプリ、ULIDライブラリ、DNSSECリゾルバ)はパディングなしの入力を受け入れます。このツールでは選択できます。どちらの形式を貼ってもデコードできるはずです。
標準Base32には0、1、8、9がなく、常に大文字です。入力にそれらがある場合、RFC 4648ではなくCrockford版やbase32hexかもしれません。入力を整えるか、正しいバリエーションを選んでください。
いいえ。エンコードとデコードはブラウザ内で行われます。入力も結果も端末から出ません。
関連ツール
AES暗号化 / 復号
OpenSSLのAES暗号方式で低リスクのテキストを暗号化・復号します。パスフレーズはSHA-256でハッシュされ、Base64出力はIVと暗号文です。
Atbash暗号エンコーダー
A-ZをZ-Aに対応させるヘブライ系の換字式暗号、Atbashでテキストをエンコードまたはデコードできます。同じ操作で暗号化と復号ができます。
A1Z26暗号エンコーダー
A1Z26暗号(A=1、B=2、... Z=26)でテキストをエンコード、または数字列を文字へデコードできます。区切り文字も選べます。
bcryptジェネレーター
平文パスワードからbcrypt hashを生成します。cost factorは4から14まで調整でき、Laravel、Django、Node、PHPと互換性があります。
bcrypt Hashジェネレーター
bcrypt hashの生成、または平文パスワードと既存bcrypt hashの照合を行います。生成とverifyを1つのツールで並べて使えます。
Base85エンコーダー・デコーダー
Adobe Ascii85(PostScript/PDF)またはZ85(ZeroMQ)形式でBase85をエンコード・デコードします。バイナリデータではBase64よりコンパクトです。