Go实现生产随机密码的示例代码
更新时间:2023年09月14日 09:36:28 作者:moon
这篇文章主要为大家详细介绍了如何利用Go实现生产随机密码的,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以参考一下
生成随机密码
package main import ( "fmt" "math/rand" "os" "strconv" "time" ) func RandomPassword(num int) { length := num if len(os.Args) > 1 { arg := os.Args[1] i, err := strconv.ParseInt(arg, 10, 64) if err != nil { fmt.Println("参数转换失败") return } if i < 4 || i > 30 { fmt.Println("密码长度介于4~30之间") return } length = int(i) } baseStr := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" baseSymbol := "!@#$%^&*+-_=." fmt.Println("-----简单密码-----") for i := 0; i < 5; i++ { fmt.Println(getRandStr(baseStr, length)) } fmt.Println("-----复杂密码-----") for i := 0; i < 5; i++ { fmt.Println(getRandStr(baseStr+baseSymbol, length)) } } func getRandStr(baseStr string, length int) string { r := rand.New(rand.NewSource(time.Now().UnixNano() + rand.Int63())) bytes := make([]byte, length) l := len(baseStr) for i := 0; i < length; i++ { bytes[i] = baseStr[r.Intn(l)] } return string(bytes) } func main() { RandomPassword(25) }
方法补充
除了上文的方法,小编还为大家整理了一些其他go语言生成随机密码的示例代码,希望对大家有所帮助
示例一
package main import ( "os" "fmt" "strconv" "math/rand" "time" ) func Usage() { fmt.Println("USAGE: getpw [int]") } func main () { args := os.Args if (len(args) > 2) { Usage() return } if len(args) == 1 { makepw(8) } if len(args) == 2 { pwl , err := strconv.Atoi(args[1]) if err != nil { fmt.Println("参数不是数字") return } makepw(pwl) } } func makepw(pwl int) { chars := "abcdefghijkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789" clen := float64(len(chars)) res := "" rand.Seed(time.Now().Unix()) for i := 0; i < pwl; i++ { rfi := int(clen * rand.Float64()) res += fmt.Sprintf("%c", chars[rfi]) } fmt.Println(res) }
示例二:利用内置库flag制作一个随机密码生成小工具
// fileName : genpassword.go // createdAt : 2021-12-07 // description : 利用flag生成随机密码 package main import ( "flag" "fmt" "math/rand" "time" ) var ( Length int Type int Num = "0123456789" Char = "abcdefghijklkmnopqrstuvwxyzABCDEFGHIJKLKMNOPQRSTUVWXYZ" Tchar = "!@#$%^&*()-." ) func initFlag() { flag.IntVar(&Length, "l", 16, "-l 密码长度 默认16位") flag.IntVar(&Type, "t", 1, `-t类型 1纯字母 2纯英文字母 3字母+数字 4字母+数字+特殊符号`) flag.Parse() } func generagePassword() string { source := Num if Type == 2 { source = Char } else if Type == 3 { source = Num + Char } else if Type == 4 { source = Num + Char + Tchar } pwd := make([]byte, Length, Length) for i := 0; i < Length; i++ { index := rand.Intn(len(source)) //pwd = append(pwd, source[index]) pwd[i] = source[index] } return string(pwd) } func main() { rand.Seed(time.Now().UnixNano()) initFlag() password := generagePassword() fmt.Println(password) } // 执行 go run genpassword.go -l=16 -t=4 //输出 .q$AetKww&fJbVs(
到此这篇关于Go实现生产随机密码的示例代码的文章就介绍到这了,更多相关Go随机密码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
最新评论