Base58エンコーダー&デコーダー
「Hello World」はBase58でJxF12TrwUP45BMdになります。Bitcoinの58文字のアルファベットにはゼロ、大文字のO、大文字のI、小文字のlがないため、紙でも画面でも読み違えにくいコードになります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- Hello World
- 計算モード
- Encode
- 結果
- JxF12TrwUP45BMd
- 入力
- Hello World
- Base58 出力
- JxF12TrwUP45BMd
- アルファベット名
- bitcoin
Base58エンコーダーは、通常のUTF-8テキストを、曖昧さのない58文字だけで構成されるコンパクトな文字列へ変換し、Base58デコーダーはその対応を逆にたどって元のテキストを復元します。このツールはBitcoinアルファベット、すなわち数字と英字からゼロ、大文字のO、大文字のI、小文字のlを除いたものを使用します。この4文字は、手書きメモ、QR印刷物、ウォレットアドレスを読む際に人が最も混同しやすい字形です。開発者はアドレス風の文字列を確認し、教師は別の基数を実演し、スクリプトは暗号ライブラリをインストールせずに決定的な往復変換を必要とします。
Bitcoin Base58とは何か、なぜ4文字が欠けているのか
Base58は、任意のバイト列を58記号のアルファベットへ写像するバイナリ・テキスト変換です。Base64とは異なり、印刷や発音で区別しにくい文字、すなわち数字のゼロ、大文字のO、大文字のI、小文字のlを取り除いています。
Bitcoinプロジェクトは残りの記号の具体的な並び、1〜9、次にIとOを除くA〜Z、次にlを除くa〜z、を広め、その並びをウォレット、多くのブロックチェーンエクスプローラー、そしてこの機能が採用しています。エンコードでは入力バイトを256進のビッグエンディアン整数として扱い、58で繰り返し割り、各剰余をアルファベットへ写像します。
先頭のゼロバイトは出力の先頭の「1」になり、Bitcoinアドレスと同じ規約に従います。デコードは対応を逆にたどり、各文字を0〜57の数字へ戻し、大きな整数を再構築して、同じ先頭「1」の規則でバイト列を復元します。
このアルファベットにはパディング文字がないため、Base64のように長さだけから固定ブロックサイズは決まりませんが、両側がアルファベットと先頭ゼロの規約に一致していれば往復変換は成立します。アルファベット外の文字、つまりゼロ、O、I、l、句読点、空白が現れた場合、デコーダーは明確に失敗しなければなりません。
Base64でもBase32でもなく、バージョンバイトやチェックサムを備えた完全なBitcoinアドレスバリデーターでもありません。
実践的なコツ、制限、Base64との違い
人が読めるテキストや、曖昧な字形なしで貼り付けたい短いバイナリ的テキストから始める場合はencodeを選び、ウォレット、QRラベル、フィクスチャファイルからBase58文字列をすでに持っている場合はdecodeを選んでください。往復チェックは最速のスモークテストです。
Hello Worldのような既知のフレーズをエンコードし、古典的な結果JxF12TrwUP45BMdを確認し、その文字列をデコードして元のフレーズをバイト単位で復元できることを確認してください。極端に長い文字列は大整数として膨張するため、分割するかオフラインで処理するのが適切です。このツールはBitcoinアドレスパーサーではありません。
バージョンプレフィックスの除去、二重SHA-256チェックサムの再計算、mainnetとtestnetの分類は行いません。Base64やBase64URLでもありません。それらのアルファベットにはプラス、スラッシュ、等号パディングが含まれ、ゼロと大文字Oも保持されます。
人の転記の安全性が密度より重要ならBase58を、文字あたりのビット数を最大化し機械間のみで運ぶならBase64を選んでください。教育では、同じ文をBase58とBase64の両方でエンコードして並べて見せると、Bitcoinアルファベットがなぜ違って見えるのか、4つの曖昧な字形がなくなるとコピー&ペーストのミスがなぜ減るのかを学習者が理解できます。
活用例
テストでのウォレット・フィクスチャ往復
フィクスチャテキストから既知のBase58文字列を生成し、暗号ライブラリへの依存なしに、デコードが同じUTF-8バイトを復元することをCIで検証できます。
印刷物やQR向けの人に安全な短縮コード
短いラベルをエンコードして、スタッフが紙やスマートフォンのカメラから入力する際に0・O・I・lの混同を避けられる印刷コードを実現できます。
別基数とBitcoinアルファベットの教育
教室やワークショップでHello Worldをエンコードし、アルファベットを調べ、無効な文字を与えて厳格な検証を実演できます。
よくある質問
このBase58エンコーダーはどのアルファベットを使いますか?
Bitcoinアルファベットです: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz。0、O、I、lは除外されます。
Base58はBase64と同じですか?
いいえ。 Base64は+、/、パディングの=を含む64記号を使い、0とOも保持します。Base58は曖昧な字形が少なく、Bitcoin系の文字列で一般的です。
完全なBitcoinアドレスの検証はしますか?
いいえ。 Bitcoin Base58アルファベットで生のUTF-8テキストをエンコード・デコードするだけです。バージョンバイトや二重SHA-256チェックサムは検査しません。
Base58の文字列をデコードすると拒否されるのはなぜですか?
Bitcoinアルファベットにない文字が入っているためです。ゼロ、大文字のOやI、小文字のl、記号や空白などが該当します。別のテキストに黙って変えるのではなく、分かりやすいメッセージで止まります。
Base58の文字列が1で始まることがあるのはなぜですか?
データの先頭にあるゼロのバイトが、結果では先頭の1になるためです。Bitcoinアドレスと同じ決まりで、デコードすると1がゼロのバイトに戻り、元のバイトがそのまま復元されます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/base58 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello World"}'const res = await fetch("https://api.kit.forhosting.com/enc/base58", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello World"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/base58",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello World"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/base58", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello World"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello World"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/base58", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "Hello World"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.base58",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_chars | 100000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
encodeを選べば平文をBase58へ変換し、decodeを選べばBase58ペイロードからUTF-8を復元できます。アルファベット外の文字には、黙った破損ではなく明確なinvalid_inputエラーが返ります。処理はUTF-8バイト列に対する純粋で決定的な算術であり、ネットワーク、乱数シード、時計への依存がないため、無料のブラウザランナーとプリペイドAPIは毎回同じJSONを返します。
Bitcoin Base58とは何か、なぜ4文字が欠けているのか
黙って置き換えれば別のペイロードを捏造することになり、ウォレット、チェックサム、自動テストにとって明確なエラーより悪い結果です。このランディングは、Base58エンコーダー、Base58デコーダー、Bitcoinアルファベット変換をオンラインで探す人を対象としています。
APIの呼び出し方とレスポンスの内容
デフォルトのmodeはencodeで、textのUTF-8バイト列がBitcoinアルファベットのBase58文字列になります。必須の文字列フィールドtext(別名input、value、data)と、encodeまたはdecodeのいずれかを取る任意のmodeを含むJSONボディを送信します。mode decodeではtextをBase58ペイロードとして扱い、復元したUTF-8文字列を返します。入力長は10万文字に制限されており、1回のリクエストが病的な大整数展開でWorkerのメモリを使い果たすことを防ぎます。encodeが成功すると、レスポンスにはmode、input、result、そして同じエンコード文字列を持つbase58、58文字すべての定数を持つalphabet、bitcoinに設定されたalphabet_name、UTF-8バイト数のinput_bytes、エンコード後の文字数のoutput_length、短い英語メッセージが含まれます。decodeが成功すると、レスポンスにはmode、input、result、デコード済みUTF-8文字列のtext、同じalphabet系フィールド、input_length、output_bytes、対応するメッセージが含まれます。検証失敗、つまりtextの欠落、非文字列のtext、超過サイズの入力、未知のmode、無効なBase58文字、UTF-8として無効なデコード結果はinvalid_inputを返し、課金されることはありません。料金は成功リクエスト1件あたり一律$0.002で、単位はitem、限界単価はゼロです。
実践的なコツ、制限、Base64との違い
デコードリクエストに禁止文字、つまり数字のゼロ、大文字のO、大文字のI、小文字のlを意図的に含め、クライアントがinvalid_inputと、インデックスと除外字形を示すエラーメッセージを正しく処理することを確認してください。ペイロードは公開されている文字数制限内に収めてください。invalid_inputを返す失敗タスクはプリペイド残高を消費しないため、無効なアルファベット文字をファズする探索的スクリプトも安価に保てます。
技術的な質問
0、O、I、lを含む文字列をデコードするとどうなりますか?
APIはinvalid_inputを返し、不正な文字とそのインデックスを示し、Bitcoin Base58ではその4字形が除外されることを伝えます。失敗タスクには課金されません。
Base58エンコーダーは無料ですか?
ブラウザツールは無料でローカルに実行されます。API呼び出しはプリペイドのKIT残高を使用し、成功リクエスト1件あたり$0.002です。invalid_inputの失敗には課金されません。