This is a Go language package for encoding/decoding base58 strings. This package supports multiple encodings.
tv42/base58 is an existing implementation. But I do not like what the package provides; the interface of the package, the command-line interface, the pull request of configuring the encoding is not merged for months, leading zeros and empty string are not encoded correctly. So I created a new package and command line interface.
package main
import (
"fmt"
"os"
"github.com/itchyny/base58-go"
)
func main() {
encoding := base58.FlickrEncoding // or RippleEncoding or BitcoinEncoding
encoded, err := encoding.Encode([]byte("100"))
if err != nil {
fmt.Println(err.Error())
os.Exit(1)
}
fmt.Println(string(encoded))
decoded, err := encoding.Decode(encoded)
if err != nil {
fmt.Println(err.Error())
os.Exit(1)
}
fmt.Println(string(decoded))
}
$ go get -u github.com/itchyny/base58-go/cmd/base58
$ base58
100
2J
100000000
9QwvW
79228162514264337593543950336
5QchsBFApWPVxyp9C
^D
$ base58 --decode
2J
100
9QwvW
100000000
5QchsBFApWPVxyp9C
79228162514264337593543950336
^D
$ echo 100000000 | base58
9QwvW
$ echo 9QwvW | base58 --decode
100000000
$ echo 100000000 | base58 --encoding=bitcoin
9qXWw
Report bug at Issues・itchyny/base58-go - GitHub.
itchyny (https://github.com/itchyny)
This software is released under the MIT License, see LICENSE.