欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go實現(xiàn)生產(chǎn)隨機密碼的示例代碼

 更新時間:2023年09月14日 09:36:28   作者:moon  
這篇文章主要為大家詳細介紹了如何利用Go實現(xiàn)生產(chǎn)隨機密碼的,文中的示例代碼簡潔易懂,具有一定的借鑒價值,有需要的小伙伴可以參考一下

生成隨機密碼

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("參數(shù)轉(zhuǎn)換失敗")
            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("參數(shù)不是數(shù)字")
      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)
}

示例二:利用內(nèi)置庫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字母+數(shù)字 
			4字母+數(shù)字+特殊符號`)
	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)
}
// 執(zhí)行 go run genpassword.go -l=16 -t=4
//輸出 .q$AetKww&fJbVs(

到此這篇關于Go實現(xiàn)生產(chǎn)隨機密碼的示例代碼的文章就介紹到這了,更多相關Go隨機密碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Golang?依賴注入經(jīng)典解決方案uber/fx理論解析

    Golang?依賴注入經(jīng)典解決方案uber/fx理論解析

    這篇文章主要為大家介紹了Golang依賴注入經(jīng)典解決方案uber/fx理論解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • 詳解Golang time包中的time.Duration類型

    詳解Golang time包中的time.Duration類型

    在日常開發(fā)過程中,會頻繁遇到對時間進行操作的場景,使用 Golang 中的 time 包可以很方便地實現(xiàn)對時間的相關操作,本文講解一下 time 包中的 time.Duration 類型,需要的朋友可以參考下
    2023-07-07
  • 關于golang中平行賦值淺析

    關于golang中平行賦值淺析

    這篇文章主要給大家介紹了關于golang中平行賦值的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用golang具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08
  • Golang使用gob實現(xiàn)結(jié)構(gòu)體的序列化過程詳解

    Golang使用gob實現(xiàn)結(jié)構(gòu)體的序列化過程詳解

    Golang struct類型數(shù)據(jù)序列化用于網(wǎng)絡傳輸數(shù)據(jù)或在磁盤上寫入數(shù)據(jù)。在分布式系統(tǒng)中,一端生成數(shù)據(jù)、然后序列化、壓縮和發(fā)送;在另一端,接收數(shù)據(jù)、然后解壓縮、反序列化和處理數(shù)據(jù),整個過程必須快速有效
    2023-03-03
  • golang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法

    golang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法

    今天小編就為大家分享一篇golang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Golang 文件操作:刪除指定的文件方式

    Golang 文件操作:刪除指定的文件方式

    這篇文章主要介紹了Golang 文件操作:刪除指定的文件方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Golang httptest包測試使用教程

    Golang httptest包測試使用教程

    這篇文章主要介紹了Golang httptest包測試使用,httptest包的理念是,非常容易模擬http服務,也就是說模擬響應寫(response writer),提供給http處理器(handle),讓我們測試http服務端和客戶端很容易
    2023-03-03
  • Go獲取兩個時間點時間差的具體實現(xiàn)

    Go獲取兩個時間點時間差的具體實現(xiàn)

    本文主要介紹了Go獲取兩個時間點時間差的具體實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • go語言通過結(jié)構(gòu)體生成json示例解析

    go語言通過結(jié)構(gòu)體生成json示例解析

    這篇文章主要為大家介紹了go語言通過結(jié)構(gòu)體生成json示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-04-04
  • Go語言中的iota關鍵字的使用

    Go語言中的iota關鍵字的使用

    這篇文章主要介紹了Go語言中的iota關鍵字的使用的相關資料,需要的朋友可以參考下
    2023-08-08

最新評論