package util

import (
	"crypto/rand"
	"math/big"
)

func RandomString(length int, charset string) string {
	if length <= 0 || len(charset) == 0 {
		return ""
	}

	b := make([]byte, length)
	max := big.NewInt(int64(len(charset)))

	for i := range b {
		n, err := rand.Int(rand.Reader, max)
		if err != nil {
			panic(err)
		}
		b[i] = charset[n.Int64()]
	}

	return string(b)
}
