密码生成器

Posted csir

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了密码生成器相关的知识,希望对你有一定的参考价值。

package main

 import (
     "flag"
    "fmt"
    "math/rand"
    "time"
 )

 var (
     length int
     charset string
)

const (
    NUmStr = "0123456789"
    ChanStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    SpecStr = "[email protected]#~,.[]()!%^*$"
)

// 解析参数
func parseArgs() {
    flag.IntVar(&length,"l",16,"-l 生成密码长度")
    flag.StringVar(&charset,"t","num",
        // 反引号以原样输出
        `-t 制定密码生成的字符集,
        num: 只使用数字,
        char: 只使用英文字母,
        mix: 使用数字和字母,
        advance: 使用数字、字母以及特殊字符`)
    flag.Parse()
}

// 检测字符串中的空格
func test1() {
    for i := 0; i < len(ChanStr); i++ {
        if ChanStr[i] != ‘ ‘ {
            fmt.Printf("%c",ChanStr[i])
        }
    }
}

func generatePasswd() string {
    // 初始化密码切片
    var passwd []byte = make([]byte,length,length)
    // 源字符
    var sourceStr string
    // 判断字符类型,如果是数字 
    if charset == "num" {
       sourceStr = NUmStr 
       // 如果选的是混合模式
    } else if charset == "char" {
        sourceStr = fmt.Sprintf("%s",ChanStr)
    } else if charset == "mix" {
        sourceStr = fmt.Sprintf("%s%s",NUmStr,ChanStr)
        // 如果选的是高级模式
    } else if charset == "advance" {
        sourceStr = fmt.Sprintf("%s%s%s", NUmStr, ChanStr,SpecStr)
    } else {
        sourceStr = NUmStr
    } 
    //fmt.Println("source:",sourceStr)
    // 遍历,生成一个随机index索引
    for i := 0; i < length; i++ {
        index := rand.Intn(len(sourceStr))
        passwd[i] = sourceStr[index]
    }
    return string(passwd)
}

func main() {
    // 随机种子
    rand.Seed(time.Now().UnixNano())
    parseArgs()
    //fmt.Printf("length:%d charset:%s
",length,charset)
    // test1()
    passwd := generatePasswd()
    fmt.Println(passwd)
    //fmt.Printf("length:%d charset:%s
",length, charset)
}

以上是关于密码生成器的主要内容,如果未能解决你的问题,请参考以下文章

修改MySQL密码报错“ERROR 1819 (HY000): Your password does not satisfy the current policy requirements“(代码片段

Apollo Codegen 没有找到生成代码的操作或片段

前端开发工具vscode如何快速生成代码片段

前端开发工具vscode如何快速生成代码片段

vscode代码片段生成vue模板

VS Code配置snippets代码片段快速生成html模板,提高前端编写效率