Go实现生产随机密码的示例代码

 更新时间:2023年09月14日 09:36:28   作者:moon  
这篇文章主要为大家详细介绍了如何利用Go实现生产随机密码的,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以参考一下

生成随机密码

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("参数转换失败")
            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("参数不是数字")
      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)
}

示例二:利用内置库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字母+数字 
			4字母+数字+特殊符号`)
	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)
}
// 执行 go run genpassword.go -l=16 -t=4
//输出 .q$AetKww&fJbVs(

到此这篇关于Go实现生产随机密码的示例代码的文章就介绍到这了,更多相关Go随机密码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • golang mysql的连接池的具体使用

    golang mysql的连接池的具体使用

    本文主要介绍了golang mysql的连接池的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • 在Go中实现和使用堆栈以及先进先出原则详解

    在Go中实现和使用堆栈以及先进先出原则详解

    Go是一种功能强大的编程语言,提供了丰富的数据结构和算法,堆栈是计算机科学中的基本数据结构之一,在本博文中,我们将探讨如何在 Go 中实现和使用堆栈,以及堆栈如何遵循先进先出 (FIFO) 原则
    2023-10-10
  • golang时间/时间戳的获取与转换实例代码

    golang时间/时间戳的获取与转换实例代码

    说实话,golang的时间转化还是很麻烦的,最起码比php麻烦很多,下面这篇文章主要给大家介绍了关于golang时间/时间戳的获取与转换的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • Go语言开发k8s之ConfigMap操作解析

    Go语言开发k8s之ConfigMap操作解析

    这篇文章主要为大家介绍了Go语言开发k8s之ConfigMap操作示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • go语言实现全排列的示例代码

    go语言实现全排列的示例代码

    本文主要介绍了go语言实现全排列的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • golang读取yaml配置文件的方法实现

    golang读取yaml配置文件的方法实现

    本文主要介绍了golang读取yaml配置文件的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10
  • 安装GoLang环境和开发工具的图文教程

    安装GoLang环境和开发工具的图文教程

    Go是一门由Google开发的编程语言,GoLand的安装非常简单,本文主要介绍了安装GoLang环境和开发工具的图文教程,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • Golang巧用defer进行错误处理的方法

    Golang巧用defer进行错误处理的方法

    错误处理是程序的重要组成部分,有效且优雅的处理错误是大多数程序员的追求,下面这篇文章主要给大家介绍了关于Golang中巧用defer进行错误处理的方法,文中通过示例介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • Golang的循环中break和continue语句的用法讲解

    Golang的循环中break和continue语句的用法讲解

    这篇文章主要介绍了Golang的循环中break和continue语句的用法讲解,是Go语言入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10
  • go语言实现简单http服务的方法

    go语言实现简单http服务的方法

    这篇文章主要介绍了go语言实现简单http服务的方法,涉及Go语言http操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02

最新评论