在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
go语言实现一个密码生成工具,支持以下功能 代码讲解地址:https://www.bilibili.com/video/BV1v5411W7t3?p=52
1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 "math/rand" 7 "time" 8 ) 9 10 var ( 11 length int 12 charset string 13 ) 14 //字符集常量 15 const ( 16 NumStr = "0123456789" 17 CharStr = "abcdefglijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 18 SpecStr = "!@#$%^&*()[]_+-=,." 19 ) 20 21 func parseArgs(){ 22 //参数分别表示 读取到达参数存到length 选项名称l 长度16 解释如果输入错误会弹出列表 23 flag.IntVar(&length,"l",16,"-l 生成密码的长度") 24 flag.StringVar(&charset,"t","num", 25 `-t 制定密码生成的字符集, 26 num:只使用数字【1-9】, 27 char:只使用英文字母【A-Z,a-z】, 28 mix:使用数字和字母, 29 advance:使用数字字母和特殊字符 30 `) 31 flag.Parse() 32 } 33 34 func generatePassword() string{ 35 var passwd []byte = make([]byte, length, length) 36 var sourceStr string = "" 37 if charset == "num" { 38 sourceStr = NumStr 39 } else if charset == "char" { 40 sourceStr = CharStr 41 } else if charset == "mix" { 42 sourceStr = fmt.Sprintf("%s%s",NumStr,CharStr) 43 } else if charset == "advance" { 44 sourceStr = fmt.Sprintf("%s%s%s",NumStr,CharStr,SpecStr) 45 } else { 46 sourceStr = NumStr 47 } 48 //随机数生成密码 49 for i := 0; i < length; i++ { 50 index := rand.Intn(len(sourceStr)) 51 passwd[i] = sourceStr[index] 52 } 53 //fmt.Println(sourceStr) 54 return string(passwd) 55 } 56 func main() { 57 rand.Seed(time.Now().Unix()) 58 parseArgs() 59 //fmt.Println("length:", length) 60 //fmt.Println("charset:", charset) 61 passwd := generatePassword() 62 fmt.Println(passwd) 63 } 代码运行命令 //-l 表示密码长度为32位 //-t 表示密码方式为num go run args.go -l 32 -t num go run args.go -l 64 -t mix
|
请发表评论