【翻译】使用Go生成一个随机字符串(密码)

来源:
Generate a random string (password) · YourBasic Go
https://yourbasic.org/golang/generate-random-string/

image.png

Random string 随机字符串

This code generates a random string of numbers and characters from the Swedish alphabet (which includes the non-ASCII characters å, ä and ö).
该代码从瑞典字母表中随机生成一串数字和字符(其中包括非ASCII字符å、ä和ö)。

rand.Seed(time.Now().UnixNano())
chars := []rune("ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ" +
    "abcdefghijklmnopqrstuvwxyzåäö" +
    "0123456789")
length := 8
var b strings.Builder
for i := 0; i < length; i++ {
    b.WriteRune(chars[rand.Intn(len(chars))])
}
str := b.String() // E.g. "ExcbsVQs"

Warning: To generate a password, you should use cryptographically secure pseudorandom numbers. See User-friendly access to crypto/rand.

警告:为了生成密码,你应该使用加密安全的伪随机数。请User-friendly access to crypto/rand。

Random string with restrictions 有限制的随机字符串

This code generates a random ASCII string with at least one digit and one special character.
该代码生成一个随机的ASCII字符串,其中至少有一个数字和一个特殊字符。

rand.Seed(time.Now().UnixNano())
digits := "0123456789"
specials := "~=+%^*/()[]{}/!@#$?|"
all := "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
    "abcdefghijklmnopqrstuvwxyz" +
    digits + specials
length := 8
buf := make([]byte, length)
buf[0] = digits[rand.Intn(len(digits))]
buf[1] = specials[rand.Intn(len(specials))]
for i := 2; i < length; i++ {
    buf[i] = all[rand.Intn(len(all))]
}
rand.Shuffle(len(buf), func(i, j int) {
    buf[i], buf[j] = buf[j], buf[i]
})
str := string(buf) // E.g. "3i[g0|)z"

Before Go 1.10 在Go 1.10 之前

In code before Go 1.10, replace the call to rand.Shuffle with this code:
在Go 1.10之前的代码中,用这段代码替换对rand.Shuffle的调用。

for i := len(buf) - 1; i > 0; i-- { // Fisher–Yates shuffle
    j := rand.Intn(i + 1)
    buf[i], buf[j] = buf[j], buf[i]
}

Further reading 延展阅读

image.png
Generate random numbers, characters and slice elements
生成随机数字、字符和切片元素

https://yourbasic.org/golang/generate-number-random-range/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/4336.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux内核查询

使用uname命令查找Linux内核 uname是用于获取系统信息的Linux命令。您也可以使用它来确定您使用的是32位还是64位系统。 打开一个终端并使用以下命令&#xff1a; [linuxmilinux:~/www.xxx.com]$ uname -r 输出将类似于以下内容&#xff1a; 5.3.0-28-generic 这意味着您正在…

【CocosCreator入门】CocosCreator组件学习 | Sprite(精灵)组件

Cocos Creator 是一款流行的游戏开发引擎&#xff0c;具有丰富的组件和工具&#xff0c;其中 Sprite 组件是最常用的之一。Sprite 组件用于渲染 2D 图像&#xff0c;并提供了许多可配置的选项&#xff0c;如图像纹理、尺寸、位置、旋转等。在本文中&#xff0c;我们将深入探讨 …

如何成为一个优秀的产品经理?

通过本文您可以清楚地了解产品经理的角色和职责&#xff0c;教您如何摇身一变成为优秀的产品经理的技巧等。 一、什么是产品经理&#xff1f; 产品经理主要的职责在于确定客户需求、将产品或功能实现商业目标的最大化、将产品打造成最终成功的样子&#xff0c;并召集团队将这…

python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)

什么是接口测试 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系等。  一般来说&#xff0c;测试接…

【Qt】Qt单元测试详解(一):通过QtCreator创建测试工程

1、简述 Qt程序支持多种测试框架,其中QtCreator可以协助创建4种测试框架,分别是: Boost的测试框架——Boost.Test Google测试框架——GTest Qt测试框架——QTest Qt Quick测试框架——QtQuickTest其他框架需要自行创建:Catch2、CTest 2、QtCreator创建测试工程 2.1 创建…

jenkins+sonarqube+自动部署服务

一、jenkins 配置Pipeline 二、新建共享库执行脚本 共享库可以是一个普通的gitlab项目&#xff0c;目录结构如下 三、添加到共享库 Jenkins Dashboard–>系统管理–>系统配置–>Global Pipeline Libraries Name: 共享库名称&#xff0c;自定义即可&#xff1b; Defa…

从CNN到Transformer:基于PyTorch的遥感影像、无人机影像的地物分类、目标检测、语义分割和点云分类

我国高分辨率对地观测系统重大专项已全面启动&#xff0c;高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成&#xff0c;将成为保障国家安全的基础性和战略性资源。随着小卫星星座的普及&#xff0c;对地观测已具备多次以上的全球覆盖…

输出数组的长度-课后程序(JavaScript前端开发案例教程-黑马程序员编著-第3章-课后作业)

【案例3-5】输出数组的长度 一、案例描述 考核知识点 length()方法 练习目标 掌握length()方法获取数组长度。掌握数组的遍历。 需求分析 数组中保存五个学生的数学成绩&#xff0c;遍历数组分别获取每一个学生的数学成绩分数&#xff0c;用length()函数获取数组的长度。 案…

帝国CMS7.2/7.5火车头配置说明以及使用教程

一淘模板 56admin.com给大家写一个帝国cms火车头采集器配置的教程&#xff0c;由于录视频太麻烦&#xff0c;所以直接打字上图了&#xff0c;希望能帮助到小伙伴&#xff01; 火车头简要来讲分为 3 个部分的配置&#xff1a;1、发布地址配置&#xff1b;2、文件保存地址与图片…

数据结构|AOE网活动的最早、最迟发生时间及关键路径问题

一些知识点&#xff1a; 整个活动的完成时间是AOE图中从始点到终点的最长路径的长度&#xff0c;这条路径称为关键路径。关键路径上的活动称作关键活动。 注意&#xff1a;关键路径不一定只有一条。 1.最早发生时间&#xff1a;从前往后&#xff0c;前驱结点到当前结点所需时…

SpringBoot使用详解

概念 Spring Boot的启动器实际上就是一个依赖。这个依赖中包含了整个这个技术的相关jar包&#xff0c;还包含了这个技术的自动配置&#xff0c;以前绝大多数XML配置都不需要配置了。 如果是Spring自己封装的启动器的artifact id名字满足&#xff1a;spring-boot-starter-xxxx&…

Java分布式锁面试题

1.为什么需要分布式锁? public synchronized void test() {System.out.println("获取到锁"); } public void test2() {synchronized (Test.class) {System.out.println("获取到锁");} }假设我们把上述代码部署到多台服务器上&#xff0c;这个互斥锁还能生…

BPI-R3开发板 - atf编译

一. 获取源码 https://github.com/mtk-openwrt/arm-trusted-firmware 二. 编译步骤 和编译uboot一样&#xff0c;编译环境为ubuntu 18.04。交叉编译工具链我用的是openwrt编译生成的工具链&#xff0c;并设置到环境变量&#xff0c;如下&#xff1a; export PATH$PATH:/root/mt…

【大屏设计方案】

大屏设计方案一、非等比放大(填充满整个屏幕)目的屏幕比例大小和设计稿的差的不多目的屏幕比例大小和设计稿的差很多二、等比放大&#xff08;比如16&#xff1a;9&#xff09;解决方案之后就可以用rem了&#xff0c;有两种便利的方式&#xff1a;也可以用media 根据不同的屏幕…

膳食真菌在癌症免疫治疗中的作用: 从肠道微生物群的角度

谷禾健康 癌症是一种恶性肿瘤&#xff0c;它可以发生在人体的任何部位&#xff0c;包括肺、乳房、结肠、胃、肝、宫颈等。根据世界卫生组织的数据&#xff0c;全球每年有超过1800万人被诊断出患有癌症&#xff0c;其中约有1000万人死于癌症。癌症已成为全球范围内的主要健康问题…

@LoadBalanced注解原理

1.概述 使用注解就像是在代码中加入了一段魔法&#xff0c;让我们轻而易举的就实现了至关重要的功能。 就像LoadBalanced一样&#xff0c;将该注解使用在RestTemplate的Bean上&#xff0c;就可以实现负载均衡&#xff0c;就像下面这段代码&#xff1a; Configuration public…

新手UI设计师必读:火爆海外设计圈的设计资源!

Hello&#xff0c;各位好&#xff01; 作为一名新手UI设计师&#xff0c;你是否无法完全搞清楚某些UI设计的基本原则和概念&#xff1f;你是否为使用哪款设计软件来开启你的设计之路而困扰&#xff1f;你是否想要在线学习设计排版、色彩搭配、形状和线条设计&#xff1f; 今天这…

rabbitMQ的详细介绍

1.概述 RabbitMQ是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点&#xff0c;当你要发送一个包裹时&#xff0c;你把你的包裹放到快递站&#xff0c;快递员最终会把你的快递送到收件人那里&#xff0c;按照这种逻辑RabbitMQ是一个快递站&#xff0c;一个快递员…

实验记录项目

1. 关于语谱图的通道的均值与方差 2023年 03月 27日 星期一 10:10:22 CST 使用tqwt 对每一份音频进行分解: 每份音频得到三个分量, cA分量: 近似分量,用于表征低频部分; cD分量: 高频分量,  res 剩余分量: 1.1 问题: 对每个分量使用如下变换,  使用Mel,  Shar…

SQL面试必会50题

引用&#xff1a; 视频讲解&#xff1a;https://www.bilibili.com/video/BV1q4411G7Lw/ SQL面试必会50题&#xff1a; https://zhuanlan.zhihu.com/p/43289968 图解SQL面试题&#xff1a;经典50题&#xff1a;https://zhuanlan.zhihu.com/p/38354000 其中重点为&#xff1a;1/2…