Go语言写的一个大小写字母加数字密码生成并写入Excel的程序

简介: 看过不少用Go语言写的大小写加上数字组成的密码,但是发现大部份的代码混编的密码中数字有一定的机率不会出现,所以写了这个代码以保证一定会出现数字,并把容易混淆的字母及数字取消,并保存成excel。

package main

import (

"fmt"
"log"
"math/rand"
"strconv"
"time"

"github.com/360EntSecGroup-Skylar/excelize/v2"

)

func checkErr(err error) {

if err != nil {
    log.Fatal(err)
}

}

type userMgr struct {

account  string
password string
file     *excelize.File

}

func randNum(passwordBit int) []rune {

lowStr := []rune{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}
highStr := []rune{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'H', 'K', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}
numStr := []rune{'2', '3', '4', '5', '6', '7', '8', '9'}
strSlice := [][]rune{lowStr, highStr, numStr}
//密码的集合切片
str := []rune{}
for {
    <-time.Tick(time.Millisecond * 1)
    rand.Seed(time.Now().UnixNano())
    //随机排序一个数值切片
    numSlice := rand.Perm(3)
    //把这个随机的切片进行读取数值
    for _, num := range numSlice {
        //随机获取到strSlice的一个切片
        numSlice2 := strSlice[num]
        randRune := rand.Intn(len(numSlice2))
        if len(str) != passwordBit {
            str = append(str, numSlice2[randRune])
        }
    }
    if len(str) == passwordBit {
        break
    }
}
return str

}

func (u *userMgr) create(userNum, i int) (slice []userMgr) {

for x := 0; x < userNum; x++ {
    u.account = fmt.Sprintf("ykst%03d", x+1)
    u.password = string(randNum(i))
    slice = append(slice, *u)
}
return slice

}
func main() {

var n = 2
userAccount := userMgr{}
userAccount.file = excelize.NewFile()
userAccount.file.SetCellValue("Sheet1", "A1", "用户帐号")
userAccount.file.SetCellValue("Sheet1", "B1", "密码")
user := userAccount.create(10, 6)

for _, value := range user {
    userAccount.file.SetCellValue("Sheet1", "A"+strconv.Itoa(n), value.account)
    userAccount.file.SetCellValue("Sheet1", "B"+strconv.Itoa(n), value.password)
    n++
}
checkErr(userAccount.file.SaveAs("account.xlsx"))

}

相关文章
|
11天前
|
程序员 Go PHP
为什么大部分的 PHP 程序员转不了 Go 语言?
【9月更文挑战第8天】大部分 PHP 程序员难以转向 Go 语言,主要因为:一、编程习惯与思维方式差异,如语法风格和编程范式;二、学习成本高,需掌握新知识体系且面临项目压力;三、职业发展考量,现有技能价值及市场需求不确定性。学习新语言虽有挑战,但对拓宽职业道路至关重要。
42 10
|
9天前
|
Go API 开发者
深入探讨:使用Go语言构建高性能RESTful API服务
在本文中,我们将探索Go语言在构建高效、可靠的RESTful API服务中的独特优势。通过实际案例分析,我们将展示Go如何通过其并发模型、简洁的语法和内置的http包,成为现代后端服务开发的有力工具。
|
11天前
|
算法 程序员 Go
PHP 程序员学会了 Go 语言就能唬住面试官吗?
【9月更文挑战第8天】学会Go语言可提升PHP程序员的面试印象,但不足以 solely “唬住” 面试官。学习新语言能展现学习能力、拓宽技术视野,并增加就业机会。然而,实际项目经验、深入理解语言特性和综合能力更为关键。全面展示这些方面才能真正提升面试成功率。
35 10
|
11天前
|
编译器 Go
go语言学习记录(关于一些奇怪的疑问)有别于其他编程语言
本文探讨了Go语言中的常量概念,特别是特殊常量iota的使用方法及其自动递增特性。同时,文中还提到了在声明常量时,后续常量可沿用前一个值的特点,以及在遍历map时可能遇到的非顺序打印问题。
|
8天前
|
存储 监控 数据可视化
Go 语言打造公司监控电脑的思路
在现代企业管理中,监控公司电脑系统对保障信息安全和提升工作效率至关重要。Go 语言凭借其高效性和简洁性,成为构建监控系统的理想选择。本文介绍了使用 Go 语言监控系统资源(如 CPU、内存)和网络活动的方法,并探讨了整合监控数据、设置告警机制及构建可视化界面的策略,以满足企业需求。
25 1
|
12天前
|
存储 Shell Go
Go语言结构体和元组全面解析
Go语言结构体和元组全面解析
|
2天前
|
Shell Go API
Go语言grequests库并发请求的实战案例
Go语言grequests库并发请求的实战案例
|
29天前
|
关系型数据库 MySQL Shell
不通过navicat工具怎么把查询数据导出到excel表中
不通过navicat工具怎么把查询数据导出到excel表中
28 0
|
12天前
|
数据采集 存储 数据挖掘
使用Python读取Excel数据
本文介绍了如何使用Python的`pandas`库读取和操作Excel文件。首先,需要安装`pandas`和`openpyxl`库。接着,通过`read_excel`函数读取Excel数据,并展示了读取特定工作表、查看数据以及计算平均值等操作。此外,还介绍了选择特定列、筛选数据和数据清洗等常用操作。`pandas`是一个强大且易用的工具,适用于日常数据处理工作。
|
25天前
|
SQL JSON 关系型数据库
n种方式教你用python读写excel等数据文件
n种方式教你用python读写excel等数据文件