Base32/Base58 エンコーダー

入力したテキストをBase32とBitcoin方式の文字集合を使うBase58へ変換します.デコードは形式を選んで行えます.Base58Checkやアドレス検証には対応していません.

読み込み中...

このツールが向いている用途

操作欄に戻る ↑

UTF-8テキストとBase32(パディング有)またはBitcoin仕様Base58(視認性配慮アルファベット)の相互エンコード結果を手軽に確認したい場面に適しています。

まず試せること

「hello」を入力してBase32の「NBSWY3DP」への変換を確認し、逆変換でも元の文字列に戻ることを試してみてください。

利用条件

文字エンコード変換ツールであり暗号化機能ではありません。Base58Check等のチェックサムやアドレス正当性検証は行わず、バイナリ混入時は置換文字になる場合があります。

ZeroToolsのブラウザ内処理とプライバシー

ZeroToolsは,入力内容を端末内で処理するツールを中心に提供しています.各ツールの対応範囲と制限を確認して利用してください.

データの取り扱い・プライバシー方針
第1章

文字列を二つの表記へ変換する手順

この画面は,入力したテキストをBase32とBase58の二つの文字列へ変換し,その結果を並べて確認するためのツールです.「エンコード」タブの入力欄に文章を入れると,Base32とBase58の結果がそれぞれの欄に表示されます.変換ボタンを押して形式を切り替える必要はなく,同じ入力から両方を見比べられます.結果欄は読み取り専用で,必要な方のコピー操作を使って別の場所へ貼り付けられます.

変換の出発点は,画面に入力された文字そのものではなくUTF-8のバイト列です.実装ではブラウザのTextEncoderでテキストをバイトへ変え,そのバイト列に対してBase32,続いてBase58の関数を呼び出しています.「A」のような英字と「日本語」のような文字では,UTF-8で使うバイト数が異なるため,入力文字数だけから出力の長さを決めることはできません.

見た目が同じでも,空白や改行を加えれば別の入力として変換されます.

手元で動作を確かめるには,まず「Hello」を入力してください.Base32欄には「JBSWY3DP」,Base58欄には「9Ajdvzr」と表示されます.次に文字を一つ追加すると両方の結果が変わり,二つの方式が単に大文字と小文字を変えているだけではないことが分かります.

元の入力欄を空にすると結果も空になります.ここで扱うのは文字列の表記変換であり,暗号化やBitcoinアドレス作成ではありません.

第2章

Base32の文字集合,パディング,入力の解釈

Base32の出力には英大文字AからZまでと数字2から7までの計32文字を使います.RFC 4648で説明される方式に沿い,元の8ビット単位のバイト列を5ビット単位で読み出して文字に置き換えます.端数のビットは末尾で埋め,出力の長さが8文字の倍数になるよう必要な場合は「=」を加えます.

例えば一文字の「f」を入れた結果は「MY======」です.「=」は元の文章に含まれていた文字ではなく,符号化した文字列の長さをそろえるための印です.「Hello」は8文字で収まるため「=」が付きません.

デコードでは入力の小文字を大文字として扱い,末尾の「=」と空白文字を除いて5ビットずつ読み戻します.このため,パディングを省いたBase32や,小文字で貼り付けた結果も復元できる場合があります.一方,数字の0や1をアルファベットのOやIに読み替える補正はありません.

例えばBase32として「0」を含む入力は,対象外の文字としてエラーになります.コピーした文字列が読めないときは,数字とアルファベットを見間違えていないか確認してください.

この画面のBase32エンコードはRFC 4648型の文字集合とパディングを出しますが,デコード側は規格検証器ではありません.「=」の個数,不要な末尾ビット,元のバイト数との関係を厳密には検証しません.不完全な符号でも何らかの文字列が表示される可能性があるため,外部から受け取ったデータの適合性を証明する用途には使わず,元データや送信元の仕様と照合してください.

第3章

Bitcoin方式のBase58とBase58Checkの違い

Base58欄は,Bitcoin系のBase58で使う文字集合を採用しています.英数字から数字の0,大文字のOとI,小文字のlを除いた58文字です.こうした紛らわしい文字を避けると,表示された文字列を目で確認する際に区別しやすくなります.ただし,転記ミスが自動的に検出されるわけではありません.

Base58はBase32のように末尾へ「=」を付けず,入力バイト列を256進数から58進数の桁へ変換します.

元のバイト列が0の値のバイトで始まる場合,その個数は出力の先頭に並ぶ「1」で表します.逆変換では先頭の「1」から0バイトを戻すため,先頭のゼロを落としません.ただしこの画面のエンコード入力欄はUTF-8テキスト用です.任意のバイナリをファイルから読み込んだり,16進数の「00」を0バイトとして入力したりする機能はありません.

文字の「0」を入力しても,それはUTF-8の数字0であって0バイトではない点に注意してください.

ここでの「Bitcoin方式」は文字の割り当て方を指します.Bitcoinアドレス等で使われるBase58Checkとは異なり,チェックサムを追加する処理も検証する処理もありません.Base58らしい文字列をデコードできても,それが有効なアドレスやWIF形式の秘密鍵であるとは判断できません.

送金先や鍵の妥当性を調べる目的で,この出力だけを根拠にしないでください.アドレスの作成や照合には,対象ネットワークとチェックサムを扱える専用の仕組みが必要です.

第4章

デコードタブでの復元とエラーの切り分け

元の文章へ戻したいときは「デコード」タブに切り替え,Base32かBase58をラジオボタンで選んでから符号を貼り付けます.形式は自動判定されません.「JBSWY3DP」はBase32を選ぶと「Hello」に戻り,「9Ajdvzr」はBase58を選んで戻します.

変換した結果を一度コピーして逆変換へ貼り付けると,入力と復元結果を自分で照合できます.入力を変えれば結果は更新され,入力を消せば復元結果とエラーも消えます.

Base32ではAからZ,2から7と末尾のパディング,Base58ではそれぞれの専用文字集合を確認してください.選んだ形式で使えない文字があればエラーになり,以前の復元結果は消えます.例えばBase58に数字の0を含めると無効文字のエラーです.長い符号が途中で切れていたり,別方式を選んだりしても,必ずエラーになるとは限りません.

どちらも「文字として読めた」だけでは元データの正しさを保証しないため,表示された文章と期待した元データを見比べることが重要です.

デコード関数が戻すのはまずバイト列で,その後TextDecoderがUTF-8の文章として表示します.符号が有効でも,元のバイトがUTF-8ではないと読めない部分が置換文字「�」(U+FFFD)として見える場合があります.これはBase58Checkの照合失敗を示す記号ではなく,テキスト化できないバイトがあったという手掛かりです.

画像や圧縮ファイルなどの内容をこの欄から正確に復元・保存する機能はありません.

第5章

エンコード,暗号化,入力情報の扱い

Base32とBase58は,バイト列を限られた文字だけで表すための符号化方式です.どちらも方式を知っていれば元へ戻せるので,内容を隠す暗号化とは違います.パスワードや秘密鍵をBase58に変換しても,第三者が読めなくなるわけではありません.非公開情報を送る前に「英数字に変わったから安全」と判断しないでください.ランダムなパスワードの生成,暗号化,ハッシュ値の計算もこのページの機能ではありません.

この画面の変換計算はブラウザ内のJavaScriptで行います.一方,それだけでサイト全体の通信がゼロ,端末上の入力が直ちに消える,クリップボード履歴が残らない,といったことは言えません.結果をコピーした場合は,貼り付け先や端末のクリップボード機能も情報の管理範囲に入ります.

特に秘密鍵,ログイン用パスワード,APIキーを実例として入力するのは避け,公開しても差し支えない短いテキストで仕組みを確かめてください.

内容を隠す必要があるなら,Base32/Base58の前後に文字を加えても代わりにはなりません.用途に応じた暗号化を別に選び,鍵やパスワードの保管方法も含めて検討してください.反対に,単に規定の文字集合へ表記を変えたいだけなら,暗号化の操作は不要です.まず必要なのが「読める文字への変換」なのか「秘密を守る処理」なのかを分けると,誤用を防げます.

第6章

結果の比較例と本ツールの対応範囲

短い動作確認には「f」と「Hello」が役立ちます.「f」ならBase32の「MY======」を見てパディングの意味を確かめられます.「Hello」ならBase32の「JBSWY3DP」とBase58の「9Ajdvzr」を比べ,Base58の方には小文字が含まれ,Base32には含まれないことを確認できます.

デコードタブで各結果を元に戻せば,どの形式を選んだかと元の文章が一致するかを同じ画面で検算できます.結果が違う場合は,先頭や末尾の空白,改行,大文字小文字など元の入力の差も確認しましょう.

Base32の決まった文字集合を使う仕様のテストと,Bitcoin方式のBase58表記の目視確認は,別々の目的です.Base32の符号をBase58に変換したい場合も,その符号をBase32としてデコードし,復元されたUTF-8テキストをエンコード欄へ入れる,という手順になります.

任意のBase32符号をそのままBase58へ変換する専用ボタンはありません.元のバイト列がテキスト以外なら,この手順では内容が変わり得ます.

対応するのはUTF-8テキストの符号化と,符号からUTF-8テキストへの表示です.任意のバイナリファイル,16進数入力,BitcoinアドレスやWIFの生成・検証,TOTP秘密鍵の作成,Base58Checkのチェックサム付加・照合には対応していません.Base32も受け取った符号の厳密な規格適合検査ではありません.

目的のデータが本当にテキストか,どの方式で作られたか,チェックサムが必要かを先に確認してから使うと,画面に結果が出たこととデータが正しいことを混同せずに済みます.

よくある質問(FAQ)

A.
Base32の出力長を8文字の倍数にそろえるためのパディングです.例えば「f」は「MY======」になります.デコード時には末尾の「=」を取り除いて処理しますが,パディングの個数や余ったビットを厳密に検証する機能はありません.
A.
できません.この画面はBitcoin方式の文字集合を使う通常のBase58変換です.Base58Checkのチェックサム付加・照合,アドレスや秘密鍵の生成・検証には対応していません.
A.
Base32またはBase58としては読めても,復元されたバイト列が正しいUTF-8テキストとは限りません.ブラウザのTextDecoderは読めない部分を置換文字「�」にする場合があります.入力形式と元データがテキストだったかを確認してください.