Base58(ベース58)
データの変換方式だよ
Base64の親戚だよ
データを58文字の文字で表現するよ
Base64で使う文字(a~z、A~Z、0~9、+、/、=)から「0」「O」「l」「I」「+」「/」「=」を除いたよ
簡単に書くよ
Base58(ベース58)(読:ベース58)とは
Base64
(すべてのデータを「a~z」「A~Z」「0~9」「+」「/」の64文字と「=」の組み合わせに変換するやり方)の、64文字から58文字になった版。
もう少し具体的に書くと
データを他の形式へ変換するやり方(エンコード方式)のひとつ
であり
すべてのデータを「abcdefghijkmnopqrstuvwxyz(lがないよ)」「ABCDEFGHJKLMNPQRSTUVWXYZ(IとOがないよ)」「123456789(0がないよ)」の58文字の組み合わせに変換するやり方
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として「エンコード」と「Base64」について説明します。
特にBase64については結構ガッツリ説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
エンコードは「データを他の形式へ変換すること」です。
Base64は「エンコード方式のひとつ」です。
メールの添付ファイル(メールにくっつけて送るファイル)の話で よく登場します。
「エンコード方式」という表現が難しかったら「データの変換ルール」と読み替えてください。
みなさんもメールに添付ファイルをくっつけて送ったことがあると思います。
添付ファイルとしてくっつけられるファイルは文字データとは限りません。
画像ファイルでも、動画ファイルでも、圧縮ファイルでも、くっつけて送れます。
とはいえ、実際にはメールで送れるのは文字だけです。
ファイルは(そのままでは)送れません。
それでは、どうやってファイルを送っているのでしょうか。
実はファイルを「文字の集まり」に変換して送っているのです。
例えば、そうですね。
ピヨ太君が自画像をピヨ子さんに送ろうとしたとしましょう。
ピヨ太君はメールに自画像をくっつけます。
メールにくっついた自画像は特定のルールに従って文字の集まりに変換されます。
ピヨ子さんに送られるメールの中身は文字だけです。
ピヨ子さんの元に到着したメールは、特定のルールに従って逆変換されます。
文字の集まりがピヨ太君の自画像に戻ります。
文字だけしか送れないメールでピヨ太君の自画像(ファイル)が送れましたね。
これが添付ファイルの仕組みです。
さて、この仕組みにおいて、特定のルールに従って
・ファイル→文字の集まり
・文字の集まり→ファイル
と変換しました。
この変換で使う「特定のルール」のひとつがBase64です。
さて、メールの添付ファイルの例を挙げたときに
実はファイルを「文字の集まり」に変換して送っているのです
と書きました。
Base64では、この「文字の集まり」を
・a~z(26文字)
・A~Z(26文字)
・0~9(10文字)
・+と/(2文字)
の64文字と「=」で表現します。
例えば、そうですね。
あ
をBase64でエンコードすると
44GC
に なります。
あるいは、そうですね。
ピヨ太
という単語をBase64でエンコードすると
44OU44Oo5aSq
に なります。
せっかくなので、もう一例いきましょう。
IT用語
という単語をBase64でエンコードすると
SVTnlKjoqp4=
に なります。
すべて
・a~z(26文字)
・A~Z(26文字)
・0~9(10文字)
・+と/(2文字)
の64文字のどれかと「=」で表現されていますよね。
もちろん、文字だけでは ありません。
画像も、動画も、圧縮ファイルも、すべて
・a~z(26文字)
・A~Z(26文字)
・0~9(10文字)
・+と/(2文字)
の64文字のどれかと「=」の組み合わせに変換されます。
だから「base」「64」です。
Base64はベースとなる文字64個でデータを表現するやり方です。
長くなったので、まとめておきます。
ここまでの説明のポイントは
1.Base64はエンコード方式(データの変換ルール)だよ
2.Base64ではデータを「a~z」「A~Z」「0~9」「+」「/」の64文字と「=」の組み合わせで表現するよ
です。
押さえておいてください。
以上を踏まえて
Base64の58文字版
が「Base58」です。
Base64ではデータを
・a~z(26文字)
・A~Z(26文字)
・0~9(10文字)
・+と/(2文字)
の64文字(と「=」)で表現しました。
Base58ではデータを
・a~zからlを除いたやつ(25文字)
・A~ZからIとOを除いたやつ(24文字)
・0~9から0を除いたやつ(9文字)
の58文字で表現します。
「0(数字のゼロ)」と「O(大文字のオー)」は見た目が似ています。
「l(小文字のエル)」と「I(大文字のアイ)」もそっくりです。
Base64から、これらの見た目が似ている文字を「手で書き写したりするときに紛らわしいよね!」ということで除いたのがBase58です。
※「+」「/」「=」が除外されたのはダブルクリックで全選択できない(例えば「SVTnlKjoqp4=」をダブルクリックしても最後の「=」が選択されない)から……という説を見ましたが、ウソかホントかは知りません。
細かく見ていくと、もう少しあれやこれやな違いがありますけどね。
そこら辺の「あれやこれや」が気になる方は他のところで情報を補完してください。
基本的には
Base64の58文字版がBase58
と思っておけば、困ることは少ないはずです。
一言でまとめるよ
まぁ「Base58」って単語が出てきたら「データを58文字の組み合わせに変換するやり方なんだな~」と お考えください。
おまけ
■訳してみるよ
「base(ベース)」の意味は「基底」とか「土台」とかです。
58は「58」ですね。
何となく くっつけると
基底が58(個の文字)
となります。






