개요[ | ]
- Go 베이스36 해시 함수
- Go k8s 스타일 해시 함수
Go
CPU
-1.0s
MEM
-0M
-1.0s
Copy
package main
import (
"bytes"
"crypto/sha256"
"fmt"
)
func b36Hash(s string, n int) string {
hasher := sha256.New()
_, _ = hasher.Write([]byte(s))
hashBytes := hasher.Sum(nil)
base36Chars := "0123456789abcdefghijklmnopqrstuvwxyz"
var base36Hash bytes.Buffer
for _, b := range hashBytes {
base36Hash.WriteByte(base36Chars[b%36])
}
var result bytes.Buffer
cnt := n / base36Hash.Len()
remainder := n % base36Hash.Len()
for i := 0; i < cnt; i++ {
result.Write(base36Hash.Bytes())
}
result.WriteString(base36Hash.String()[:remainder])
return result.String()
}
func main() {
s := "Hello, world!"
fmt.Println(b36Hash(s, 5)) // dnj3a
fmt.Println(b36Hash(s, 7)) // dnj3asc
fmt.Println(b36Hash(s, 100)) // dnj3ascgnuc6621sp7vqbkxgj04jg4lvdnj3ascgnuc6621sp7vqbkxgj04jg4lvdnj3ascgnuc6621sp7vqbkxgj04jg4lvdnj3
}
dnj3a dnj3asc dnj3ascgnuc6621sp7vqbkxgj04jg4lvdnj3ascgnuc6621sp7vqbkxgj04jg4lvdnj3ascgnuc6621sp7vqbkxgj04jg4lvdnj3