• 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
  • 相关阅读:
    我所了解的meta
    移动端遇到的问题
    反编译工具
    Nginx安装及配置免费HTTPS证书
    Python中通过lambda抛异常的奇技淫巧
    理解PEP333-WSGI
    Doker学习笔记之一:安装
    《程序员修炼之道》备忘清单
    日常开发工具列表
    NLP入门资料
  • 原文地址:https://www.cnblogs.com/xwxz/p/13322927.html
Copyright © 2020-2023  润新知