日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

密码生成器

發(fā)布時間:2024/5/24 综合教程 25 生活家
生活随笔 收集整理的這篇文章主要介紹了 密码生成器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
package main

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

 var (
     length int
     charset string
)

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

// 解析參數(shù)
func parseArgs() {
    flag.IntVar(&length,"l",16,"-l 生成密碼長度")
    flag.StringVar(&charset,"t","num",
        // 反引號以原樣輸出
        `-t 制定密碼生成的字符集,
        num: 只使用數(shù)字,
        char: 只使用英文字母,
        mix: 使用數(shù)字和字母,
        advance: 使用數(shù)字、字母以及特殊字符`)
    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
    // 判斷字符類型,如果是數(shù)字 
    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)
    // 遍歷,生成一個隨機(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
",length,charset)
    // test1()
    passwd := generatePasswd()
    fmt.Println(passwd)
    //fmt.Printf("length:%d charset:%s
",length, charset)
}

總結(jié)

以上是生活随笔為你收集整理的密码生成器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。