• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Go语言学习笔记十三--Go语言练习go语言实现一个密码生成工具

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go语言常量和变量发布时间:2022-07-10
下一篇:
GO语言学习之多维数组发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap