在Go中创建随机的安全密码

Go的随机数生成器是生成难以猜出的密码的一种很好的方法。

属性提供的随机数生成器。GO编程语言生成由ASCII字符组成的难以猜测的密码。尽管本文中提供的代码很容易阅读,但最好已经知道了解它的基本知识。如果您对编程语言不熟悉,要去参观学习,然后回到这里。

在进入实用程序和代码之前,请查看ASCII表的以下子集,如man 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这一职能是:

randommin max
return randIntnmaxmin min

此函数使用RAND.In()go函数生成属于给定范围的随机整数。注意,rand.Intn()返回一个属于[0,n]的非负随机数;你可以在数学/RAND文档中找到数学/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库的密码/ 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++
}

最小值为0而Max的价值是94的价值startChar是!,它是ASCII表中的第一个可打印字符(其十进制ASCII代码为33)因此,将生成的所有ASCII字符都位于!而在~字符,该字符的十进制ASCII代码为126.

因此,生成的每个随机数都大于min,小于MAX,并转换为ASCII字符。进程继续进行,直到生成的密码具有所需的长度。
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

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

你可以同时找到random.go和randomPass.go在GitHub。您也可以在play.golang.org.希望这有所帮助

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • Go语言排序算法之插入排序与生成随机数详解

    前言 排序,对于每种编程语言都是要面对的.这里跟大家一起分享golang实现一些排序算法,并且说明如何生成随机数.下面话不多说了,来一起看看详细的介绍吧. 经典排序算法 算法的学习非常重要,是检验一个程序员水平的重要标准.学习算法不能死记硬背,需要理解其中的思想,这样才能灵活应用到实际的开发中. 七大经典排序算法 插入排序 选择排序 冒泡排序 希尔排序 归并排序 堆排序 快速排序 插入排序 先考虑一个问题:对于长度为n的数组,前n-1位都是递增有序的,如何排序? 1.从第1位至第n-1位遍历数组

  • 利用Golang生成整数随机数方法示例

    php随机数 生成一个给定范围的随机数,用 PHP 就太简单不过了,而且可以指定从负数到正整数的范围,如: <?php echo mt_rand(-988, 888); 这样就随机生成 -988 到 888 的随机数. 使用 Go 就要稍微麻烦一点.以下两个函数分别是生成一个最大范围内随机整数,和生成一个区间范围的随机整数: 生成一个最大范围内随机数 一定要给一个时间戳的种子,否则每次生成都是一样的值.这里就是生成 [0,100) 的随机数. func GenerateRandnum() int

  • Golang编程实现生成n个从a到b不重复随机数的方法

    本文实例讲述了Golang编程实现生成n个从a到b不重复随机数的方法.分享给大家供大家参考,具体如下: 代码很简单: 复制代码 代码如下: package test import (     "fmt"     "math/rand"     "time" ) //生成若干个不重复的随机数 func RandomTestBase() {     //测试5次     for i := 0; i < 5; i++ {         nums

  • Go语言生成随机数的方法

    本文实例讲述了Go语言生成随机数的方法.分享给大家供大家参考.具体实现方法如下: golang生成随机数可以使用math/rand包 复制代码 代码如下: package main        import (     "fmt"     "math/rand" )        func main() {     for i:=0; i<10; i++ {         fmt.Println(rand.Intn(100))     } } 发现这种情况

  • Go语言实现互斥锁、随机数、time、List

    Go语言实现互斥锁.随机数.time.List import ( "container/list" "fmt" "math/rand" //备注2:随机数的包 "sync" //备注1:异步任务的包 "time" ) type INFO struct { lock sync.Mutex //备注1:异步锁 Name string Time int64 } var List *list.List = list

  • go语言返回1-99之间随机数的方法

    本文实例讲述了go语言返回1-99之间随机数的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import (     "fmt"     "math/rand" ) func main() {     max := big.NewInt(100)     i, err := rand.Int(rand.Reader, max) } 希望本文所述对大家的Go语言程序设计有所帮助.

  • GoLang 中的随机数的示例代码

    随机数我们都知道,就是计算机通过某种算法,"随机"的生成一个数字.很多编程语言都有内置的方法来生成随机数,那么 GoLang 中是怎样一种情况呢? 伪随机数 我们都知道"随机数"在现实生活中的概念,可能你随手抛一个硬币,就可以说其结果是随机的,但是在计算机中要确定一个"随机数"真的是"随机数",那可是有标准的,不是你随随便便说是就是. 根据密码学原理,要想对一个"随机数"进行随机性检验有以下几个标准: 统计

  • 在Go中创建随机的安全密码

    Go的随机数生成器是生成难以猜出的密码的一种很好的方法. 属性提供的随机数生成器.GO编程语言生成由ASCII字符组成的难以猜测的密码.尽管本文中提供的代码很容易阅读,但最好已经知道了解它的基本知识.如果您对编程语言不熟悉,要去参观学习,然后回到这里. 在进入实用程序和代码之前,请查看ASCII表的以下子集,如man ascii指挥: 30 40 50 60 70 80 90 100 110 120 --------------------------------- 0: ( 2 < F P Z

  • PHP生成随机用户名和密码的实现代码

    有时候我们需要在应用程序中使用随机生成用户名和密码,这样可以大大提高应用程序的安全,在PHP中生成随机用户名和密码可以使用 mt_rand 函数或者是 rand 函数, rand 函数在验证码中的应用多一些,而生成长字符的随机码一般都需要 mt_rand 函数. 使用PHP生成随机数可以应用在许多地方,比如可以设计程序的随机密码.模拟掷骰子游戏的应用程序.石头剪子布游戏应用程序等等. 下面是PHP生成随机数的两个函数方法: 复制代码 代码如下: //自动为用户随机生成用户名(长度6-13)   

  • Asp中随机产生用户密码的代码

    随机产生用户密码(good),说明:通过随机产生密码,然后将密码EMail给注册用户,你可以确认用户的EMail填写是否正确.  说明:通过随机产生密码,然后将密码EMail给注册用户,你可以确认用户的EMail填写是否正确.自动产生的密码往往安全性更高,同时,你可以过滤那些无效的用户.    把下面的代码保存为random.asp文件:  复制代码 代码如下: <%   Sub StrRandomize(strSeed)   Dim i, nSeed    nSeed = CLng(0)  

  • 详解Python中生成随机数据的示例详解

    目录 随机性有多随机 加密安全性 PRNG random 模块 数组 numpy.random 相关数据的生成 random模块与NumPy对照表 CSPRNG 尽可能随机 os.urandom() secrets 最佳保存方式 UUID 工程随机性的比较 在日常工作编程中存在着各种随机事件,同样在编程中生成随机数字的时候也是一样,随机有多随机呢?在涉及信息安全的情况下,它是最重要的问题之一.每当在 Python 中生成随机数据.字符串或数字时,最好至少大致了解这些数据是如何生成的. 用于在 P

  • php中存储用户ID和密码到mysql数据库的方法

    创建用户信息表: 复制代码 代码如下: CREATE TABLE tbl_auth_user (user_id VARCHAR(10) NOT NULL,user_password CHAR(32) NOT NULL,PRIMARY KEY (user_id));INSERT INTO tbl_auth_user (user_id, user_password) VALUES ('theadmin', PASSWORD('chumbawamba'));INSERT INTO tbl_auth_u

  • PHP中创建和验证哈希的简单方法实探

    PHP 5.5.0 带来了一份完整的全新特性与函数的列表.全新API之一就是Password Hashing API.它包含4个函数:password_get_info(), password_hash(), password_needs_rehash(),和password_verify().让我们分步来了解每个函数. 我们首先讨论password_hash()函数.这将用作创建一个新的密码的哈希值.它包含三个参数:密码.哈希算法.选项.前两项为必须的.你可以根据下面的例子来使用这个函数: $

  • javascript实现数组内值索引随机化及创建随机数组的方法

    本文实例讲述了javascript实现数组内值索引随机化及创建随机数组的方法.分享给大家供大家参考.具体如下: 今天在QW交流群里看到有同学讨论使数组随机化的问题,其中给出的算法很不错,让我想起了之前自己实现过的不怎么"漂亮"的方法.想想我们有时候在繁忙的写业务代码时只是为了实现其功能,并未花太大心思去思考是否有更好的实现方法. 就这个数组问题(随即排序一个数组里的值,返回一个新数组)来说,我以前的实现方法是这样的: function randArr(arr) { var ret =

  • 在SQL Server 2005中创建CLR存储过程的详细介绍

    在2005之前的版本创建存储过程都是在数据库里面写Transact-SQL语言实现的,不过现在SQL Server 2005支持用其他面向对象的语言编写CLR存储过程了,关于这样做的好处,官方有很多解释了,这里就直接说明实现方法了. 假设服务器里面有个test数据库,数据库有个架构user,还有一个表test1,然后有个sql登陆用户叫test_user,将这个用户设置成VS2005里面数据库连接的登陆用户. 在VS2005中创建一个项目,类别是SQL Server数据库项目,然后往项目里面添加

  • Yii中创建自己的Widget实例

    本文实例讲述了Yii中创建自己的Widget实现方法.分享给大家供大家参考,具体如下: 这里以一个随机广告图片为例说明Yii中Widget的用法 1. 调用Widget 复制代码 代码如下: <?php $this->widget('WidgetName'); ?> 或者 <?php $widget=$this->beginWidget('path.to.WidgetClass'); ?> ...可能会由小物件获取的内容主体... <?php $this->

  • vue+element-ui集成随机验证码+用户名+密码的form表单验证功能

    在登入页面,我们往往需要通过输入验证码才能进行登入,那我们下面就详讲一下在vue项目中如何配合element-ui实现这个功能 第一步:自定义一个生产随机验证码的组件,其本质是使用canvas绘制,详细代码如下: <template> <div class="s-canvas"> <canvas id="s-canvas" :width="contentWidth" :height="contentHeig

随机推荐