package pwd import ( "fmt" "math/rand" ) const ( NumStr = "0123456789" CharStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" SpecStr = "+=-@#~,.[]()!%^*$" ) type Mode int const ( MixMode Mode = 0 NumMode Mode = 1 CharMode Mode = 2 ) const ( DefaultMode = MixMode DefaultLength = 16 ) func DefaultGenerate() string { return Generate(DefaultMode, DefaultLength) } func Generate(m Mode, length int) string { if length < 1 { length = DefaultLength } var passwd = make([]byte, length) var sourceStr string if m == NumMode { sourceStr = NumStr } else if m == CharMode { sourceStr = CharStr } else { sourceStr = fmt.Sprintf("%s%s%s", NumStr, CharStr, SpecStr) } for i := 0; i < length; i++ { index := rand.Intn(len(sourceStr)) passwd[i] = sourceStr[index] } return string(passwd) } func ConvertName(list []string) string { var str = "" for _, s := range list { str += s } return str }