76 lines
2.1 KiB
Go
76 lines
2.1 KiB
Go
package tool
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"math/big"
|
|
mrand "math/rand"
|
|
)
|
|
|
|
var (
|
|
letters = []byte("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
|
letterNum = []byte("0123456789")
|
|
letterLow = []byte("abcdefghijklmnopqrstuvwxyz")
|
|
letterCap = []byte("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
|
letterSyb = []byte("!@#$%^&*()_+-=")
|
|
adjectives = []string{
|
|
"开心的", "灿烂的", "温暖的", "阳光的", "活泼的",
|
|
"聪明的", "优雅的", "幸运的", "甜蜜的", "勇敢的",
|
|
"宁静的", "热情的", "温柔的", "幽默的", "坚强的",
|
|
"迷人的", "神奇的", "快乐的", "健康的", "自由的",
|
|
"梦幻的", "勤劳的", "真诚的", "浪漫的", "自信的",
|
|
}
|
|
|
|
plants = []string{
|
|
"苹果", "香蕉", "橘子", "葡萄", "草莓",
|
|
"西瓜", "樱桃", "菠萝", "柠檬", "蜜桃",
|
|
"蓝莓", "芒果", "石榴", "甜瓜", "雪梨",
|
|
"番茄", "南瓜", "土豆", "青椒", "洋葱",
|
|
"黄瓜", "萝卜", "豌豆", "玉米", "蘑菇",
|
|
"菠菜", "茄子", "芹菜", "莲藕", "西兰花",
|
|
}
|
|
)
|
|
|
|
func RandomInt(max int64) int64 {
|
|
num, _ := rand.Int(rand.Reader, big.NewInt(max))
|
|
return num.Int64()
|
|
}
|
|
|
|
func RandomString(length int) string {
|
|
result := make([]byte, length)
|
|
for i := 0; i < length; i++ {
|
|
num, _ := rand.Int(rand.Reader, big.NewInt(int64(len(letters))))
|
|
result[i] = letters[num.Int64()]
|
|
}
|
|
return string(result)
|
|
}
|
|
|
|
func RandomPassword(length int, withSymbol bool) string {
|
|
result := make([]byte, length)
|
|
kind := 3
|
|
if withSymbol {
|
|
kind++
|
|
}
|
|
|
|
for i := 0; i < length; i++ {
|
|
switch i % kind {
|
|
case 0:
|
|
num, _ := rand.Int(rand.Reader, big.NewInt(int64(len(letterNum))))
|
|
result[i] = letterNum[num.Int64()]
|
|
case 1:
|
|
num, _ := rand.Int(rand.Reader, big.NewInt(int64(len(letterLow))))
|
|
result[i] = letterLow[num.Int64()]
|
|
case 2:
|
|
num, _ := rand.Int(rand.Reader, big.NewInt(int64(len(letterCap))))
|
|
result[i] = letterCap[num.Int64()]
|
|
case 3:
|
|
num, _ := rand.Int(rand.Reader, big.NewInt(int64(len(letterSyb))))
|
|
result[i] = letterSyb[num.Int64()]
|
|
}
|
|
}
|
|
return string(result)
|
|
}
|
|
|
|
func RandomName() string {
|
|
return adjectives[mrand.Intn(len(adjectives))] + plants[mrand.Intn(len(plants))]
|
|
}
|