package captcha import ( "fmt" "math" "math/rand/v2" "time" ) type Generator interface { Generate() string } type stringCaptchaGenerator struct { length int } func NewStringCaptchaGenerator(length int) Generator { return &stringCaptchaGenerator{ length: length, } } func (s *stringCaptchaGenerator) Generate() string { n := math.Pow(10, float64(s.length)) r := rand.New(rand.NewPCG(uint64(time.Now().UnixNano()), 2)).IntN(int(n)) return fmt.Sprintf("%0*d", s.length, r) }