學習目標
- 了解 Base58 特性、編碼表、計算方式與程式撰寫
特性
- Bitcoin 用來產生錢包 address 的編碼方式
- 不使用易於混淆文字
- 例如:數字【 0 】、字母大寫【 O 】、
字母大寫 i【 I 】、字母小寫 L【 l 】與【 + 】、【 / 】符號
- 換句話說 Base58 是由不包括( 0、O、l、I )的大小寫字母和數字所组成的
- 字元集為 9 個數字、24 個大寫字母、25 個小寫字母
Base58 編碼表

計算方式
使用 Base58 編碼 【 Hello 】 的字串,最後會得到 【 9Ajdvzr 】的編碼結果。
字元 ASCII 十進位
H 72 * 2^32 = 309237645312
e 101 * 2^24 = 1694498816
l 108 * 2^16 = 7077888
l 108 * 2^8 = 27648
o 111 * 2^0 = 111
㊟ 總和: 309237645312
+ 1694498816
7077888
27648
111
---------------
= 310939249775
㊟【 ^ 】 符號為 【 次方 】
商 餘 Base58 查表
310939249775 / 58 = 5361021547 49 r
5361021547 / 58 = 92431405 57 z
92431405 / 58 = 1593644 53 v
1593644 / 58 = 27476 36 d
27476 / 58 = 473 42 j
473 / 58 = 8 9 A
8 / 58 = 0 8 9
※ 使用 Base58 編碼 【 Hello 】 的字串,最後會得到 【 9Ajdvzr 】的編碼結果

Reference
GitHub
List of blogs