Go k8s 스타일 해시 함수

개요[ | ]

Go 베이스36 해시 함수
Go k8s 스타일 해시 함수
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
}
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}