golang写的一个密码大小写加数字混排组合后并保存为excel格式

因为工作需要创建200个帐号及大小写加数字混排组合的密码,本来是想着在csdn上拿别的朋友写好的代码来用一下,但是看了几个代码后觉得不是很满意不能百分之百保证一定会出现数字,或者大小写所以我就自己写了一个代码。

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"))
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值