Golang实现一个密码生成器
生活随笔
收集整理的這篇文章主要介紹了
Golang实现一个密码生成器
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
小地鼠防止有人偷他的果實(shí),在家里上了一把鎖。這個(gè)鎖怎么來的呢?請(qǐng)往下看。。
package mainimport ("flag""fmt""math/rand""time" )var (length intcharset string )const (NUmStr = "0123456789"CharStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"SpecStr = "+=-@#~,.[]()!%^*$" )//解析參數(shù) func parseArgs() {//需要接受指針,就傳遞地址,&flag.IntVar(&length, "l", 16, "-l 生成密碼的長度")flag.StringVar(&charset, "t", "num",//反引號(hào)以原樣輸出`-t 制定密碼生成的字符集,num:只使用數(shù)字[0-9],char:只使用英文字母[a-zA-Z],mix:使用數(shù)字和字母,advance:使用數(shù)字、字母以及特殊字符`)flag.Parse() }//檢測字符串中的空格 func test1() {for i := 0; i < len(CharStr); i++ {if CharStr[i] != ' ' {fmt.Printf("%c", CharStr[i])}} }func generatePasswd() string {//初始化密碼切片var passwd []byte = make([]byte, length, length)//源字符串var sourceStr string//判斷字符類型,如果是數(shù)字if charset == "num" {sourceStr = NUmStr//如果選的是字符} else if charset == "char" {sourceStr = charset//如果選的是混合模式} else if charset == "mix" {sourceStr = fmt.Sprintf("%s%s", NUmStr, CharStr)//如果選的是高級(jí)模式} else if charset == "advance" {sourceStr = fmt.Sprintf("%s%s%s", NUmStr, CharStr, SpecStr)} else {sourceStr = NUmStr}fmt.Println("source:", sourceStr)//遍歷,生成一個(gè)隨機(jī)index索引,for i := 0; i < length; i++ {index := rand.Intn(len(sourceStr))passwd[i] = sourceStr[index]}return string(passwd) }func main() {//隨機(jī)種子 rand.Seed(time.Now().UnixNano())parseArgs()fmt.Printf("length:%d charset:%s\n", length, charset)//test1()passwd := generatePasswd()fmt.Println(passwd)fmt.Printf("length:%d charset:%s\n", length, charset) }效果呢?
?
轉(zhuǎn)載于:https://www.cnblogs.com/pyyu/p/8664255.html
總結(jié)
以上是生活随笔為你收集整理的Golang实现一个密码生成器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 广发DIY卡怎么激活?五种方式快速激活
- 下一篇: Kibana源码分析--Hapijs路由