golang获取随机密码_在Go中创建随机,安全的密码

golang获取随机密码

您可以使用Go编程语言提供的随机数生成器来生成由ASCII字符组成的难以猜测的密码。 尽管本文提供的代码易于阅读,但是最好是已经了解Go的基础知识以理解它。 如果您是编程语言的新手,请参加“ 漫游”以了解更多信息,然后返回此处。

在进入实用程序和代码之前,请看一下man ascii命令的输出中找到的ASCII表的此子集:


   
   
 30 40 50 60 70 80 90 100 110 120
 ---------------------------------
0:    (  2  <  F  P  Z  d   n   x
1:    )  3  =  G  Q  [  e   o   y
2:    *  4  >  H  R  \  f   p   z
3: !  +  5  ?  I  S  ]  g   q   {
4: "  ,  6  @  J  T  ^  h   r   |
5: #  -  7  A  K  U  _  i   s   }
6: $  .  8  B  L  V  `  j   t   ~
7: %  /  9  C  M  W  a  k   u  DEL
8: &  0  :  D  N  X  b  l   v
9: '  1  ;  E  O  Y  c  m   w

可打印ASCII字符的十进制值范围为33到126; 没有其他ASCII值适合包含在密码中。 因此,本文介绍的实用程序将在该范围内产生ASCII字符。

创建随机整数

第一个实用程序名为random.go ,它生成指定数量的驻留在给定范围内的随机整数。 random.go最重要的部分是此功能:


   
   
func random ( min , max int ) int {
        return rand . Intn ( max - min ) + min
}

此函数使用rand.Intn() Go函数生成属于给定范围的随机整数。 请注意, rand.Intn()返回一个属于[0,n)的非负随机数; 如果函数的参数为​​负数,则它将惊慌。 紧急消息将是panic: invalid argument to Intn 。 您可以在math / rand文档中找到math/rand软件包的文档

random.go实用程序接受三个命令行参数:生成的整数的最小值,最大值和将要生成的整数数。

编译并执行random.go将创建以下输出:


   
   
$ go build random.go
$ ./random
Usage: ./random MIX MAX TOTAL
$ ./random 1 3 10
2 2 1 2 2 1 1 2 2 1

如果您希望在Go中生成更安全的随机数,请使用Go库的crypto/rand软件包。

创建随机密码

第二个实用程序randomPass.go生成随机密码。 randomPass.go使用random()函数生成随机数,该随机数将使用以下Go代码转换为ASCII字符:


   
   
for {
        myRand := random ( MIN , MAX )
        newChar := string ( startChar [ 0 ] + byte ( myRand ))
        fmt . Print ( newChar )
        if i == LENGTH {
                break
        }
        i ++
}

MIN的值为0 ,MAX的值为94 ,而startChar值为 ,这是ASCII表中的第一个可打印字符(十进制ASCII码为33 )。 因此,将要生成的所有ASCII字符都位于之后字符之前,其十进制ASCII码为126

randomPass.go实用程序接受单个(可选)命令行参数,该参数定义生成的密码的长度。 它的默认值是8,这是一个非常普通的密码长度。 执行randomPass.go将生成以下类型的输出:


   
   
$ go run randomPass.go 1
Z
$ go run randomPass.go 10
#Cw^a#IwkT
$ go run randomPass.go
Using default values!
[PP8@'Ci

最后一个细节:不要忘记用种子值调用rand.Seed()来初始化随机数生成器。 如果您始终使用相同的种子值,则随机数生成器将创建相同的随机整数序列。

Random number generator code

您可以在GitHub上找到random.gorandomPass.go 。 您也可以在play.golang.org上执行它。

希望这有用。 如有任何疑问,请在下面发表评论,或在Twitter上与我联系。

翻译自: https://opensource.com/article/18/5/creating-random-secure-passwords-go

golang获取随机密码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值