Forked from github.com/mr-tron/base58. Separated repos for security (prevent potential supply chain attacks).
| .forgejo/workflows | ||
| base58 | ||
| examples | ||
| .gitignore | ||
| .mailmap | ||
| alphabet.go | ||
| base58.go | ||
| base58_2_test.go | ||
| base58_test.go | ||
| doc.go | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| README.md | ||
| trivial.go | ||
Fast Implementation of Base58 encoding
This version is maintained and used by
Note
Original can be found under github.com/mr-tron/base58.
Fast implementation of base58 encoding in Go.
Base algorithm is adapted from https://github.com/trezor/trezor-crypto/blob/master/base58.c
Benchmark
- Trivial - encoding based on big.Int (most libraries use such an implementation)
- Fast - optimized algorithm provided by this module
BenchmarkTrivialBase58Encoding-4 123063 9568 ns/op
BenchmarkFastBase58Encoding-4 690040 1598 ns/op
BenchmarkTrivialBase58Decoding-4 275216 4301 ns/op
BenchmarkFastBase58Decoding-4 1812105 658 ns/op
Encoding - faster by 6 times
Decoding - faster by 6 times
Usage example
package main
import (
"fmt"
"code.rebxd.com/Rebxd/base58"
)
func main() {
encoded := "1QCaxc8hutpdZ62iKZsn1TCG3nh7uPZojq"
num, err := base58.Decode(encoded)
if err != nil {
fmt.Printf("Demo %v, got error %s\n", encoded, err)
}
chk := base58.Encode(num)
if encoded == string(chk) {
fmt.Printf ( "Successfully decoded then re-encoded %s\n", encoded )
}
}
