616c6b1c62
Release Docker multi arch / docker (push) Has been cancelled
Test Install Script / Test Script Syntax (push) Has been cancelled
Test Install Script / Test on almalinux-10 (default) (push) Has been cancelled
Test Install Script / Test on almalinux-10 (root) (push) Has been cancelled
Test Install Script / Test on almalinux-8 (default) (push) Has been cancelled
Test Install Script / Test on almalinux-8 (root) (push) Has been cancelled
Test Install Script / Test on almalinux-9 (default) (push) Has been cancelled
Test Install Script / Test on almalinux-9 (root) (push) Has been cancelled
Test Install Script / Test on amazonlinux-2 (default) (push) Has been cancelled
Test Install Script / Test on amazonlinux-2 (root) (push) Has been cancelled
Test Install Script / Test on debian-11 (default) (push) Has been cancelled
Test Install Script / Test on debian-11 (root) (push) Has been cancelled
Test Install Script / Test on debian-12 (default) (push) Has been cancelled
Test Install Script / Test on debian-12 (root) (push) Has been cancelled
Test Install Script / Test on debian-13 (default) (push) Has been cancelled
Test Install Script / Test on debian-13 (root) (push) Has been cancelled
Test Install Script / Test on fedora-latest (default) (push) Has been cancelled
Test Install Script / Test on fedora-latest (root) (push) Has been cancelled
Test Install Script / Test on rocky-10 (default) (push) Has been cancelled
Test Install Script / Test on rocky-10 (root) (push) Has been cancelled
Test Install Script / Test on rocky-8 (default) (push) Has been cancelled
Test Install Script / Test on rocky-8 (root) (push) Has been cancelled
Test Install Script / Test on rocky-9 (default) (push) Has been cancelled
Test Install Script / Test on rocky-9 (root) (push) Has been cancelled
Test Install Script / Test on ubuntu-22.04 (default) (push) Has been cancelled
Test Install Script / Test on ubuntu-22.04 (root) (push) Has been cancelled
Test Install Script / Test on ubuntu-24.04 (default) (push) Has been cancelled
Test Install Script / Test on ubuntu-24.04 (root) (push) Has been cancelled
44 lines
917 B
Go
44 lines
917 B
Go
package torrshash
|
|
|
|
import (
|
|
"bytes"
|
|
"math/big"
|
|
"regexp"
|
|
"strings"
|
|
)
|
|
|
|
const base62Alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
|
|
|
|
var base62Regex = regexp.MustCompile(`^[a-zA-Z0-9]+$`)
|
|
|
|
func IsBase62(s string) bool {
|
|
return base62Regex.MatchString(strings.TrimSpace(s))
|
|
}
|
|
|
|
func Encode62(b []byte) string {
|
|
x := new(big.Int).SetBytes(b)
|
|
base := big.NewInt(62)
|
|
zero := big.NewInt(0)
|
|
mod := new(big.Int)
|
|
var res []byte
|
|
for x.Cmp(zero) > 0 {
|
|
x.QuoRem(x, base, mod)
|
|
res = append(res, base62Alphabet[mod.Int64()])
|
|
}
|
|
for i, j := 0, len(res)-1; i < j; i, j = i+1, j-1 {
|
|
res[i], res[j] = res[j], res[i]
|
|
}
|
|
return string(res)
|
|
}
|
|
|
|
func Decode62(s string) []byte {
|
|
res := new(big.Int)
|
|
base := big.NewInt(62)
|
|
for _, char := range s {
|
|
val := bytes.IndexByte([]byte(base62Alphabet), byte(char))
|
|
res.Mul(res, base)
|
|
res.Add(res, big.NewInt(int64(val)))
|
|
}
|
|
return res.Bytes()
|
|
}
|