密码生成器

密码生成器

package main

import (
	"flag"
	"fmt"
	"math/rand"
	"time"
)

var (
	NUmStr = "0123456789"
	ChanStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
	SpecStr = "+=-@#~,.[]()!%^*$"
	MixtureStr = NUmStr+ChanStr+SpecStr
)

var (
	lens int
	num bool
	char bool
	mixture bool
)

func CommArgs(){
	flag.IntVar(&lens,"len",6,"default len 5")
	flag.BoolVar(&num,"num",false,"default false")
	flag.BoolVar(&char,"char",false,"default false")
	flag.BoolVar(&mixture,"mixture",false,"default false")
}

func init(){
	CommArgs()
	flag.Parse()
	rand.Seed(time.Now().UnixNano())
}

func Getstr(b []byte,str string)string{
	for i,_:=range b{
		b[i] = str[rand.Intn(len(str))]

	}
	return string(b)
}

func Randstring(lens int)string{
	 b := make([]byte,lens)
	 var str string
	if num {
		str=Getstr(b,NUmStr)

	}else if char {
		str=Getstr(b,ChanStr)

	}else{
		str=Getstr(b,MixtureStr )
	}
	return  str
}

func main() {

	if !num  && !char && !mixture  {
		fmt.Println("comm args err")
		return
	}

	str:=Randstring(lens)
	fmt.Println(str)
}

原文地址:https://www.cnblogs.com/egrep/p/11463545.html