zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    c# 泛型集合Dictionary
    int+? int后带问题是什么意思,请看内容。
    在ASP.NET中实现Url ReWriting 示例
    #DataDirectory是什么意思呢?
    vs2008生成自定义dll,VS2008发布、生成网站时设置固定的dll文件名?
    平台安装注意事项
    快速开发平台程序运行环境
    快速开发平台介绍(动态)
    快速开发平台程序安装包20120612
    JavaFx 2.0总结
  • 原文地址:https://www.cnblogs.com/xwxz/p/13322927.html
Copyright © 2011-2022 走看看