Go语言学习笔记十三--Go语言练习 go语言实现一个密码生成工具
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!