博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
密码生成器
阅读量:5061 次
发布时间:2019-06-12

本文共 1708 字,大约阅读时间需要 5 分钟。

package main import (     "flag"    "fmt"    "math/rand"    "time" ) var (     length int     charset string)const (    NUmStr = "0123456789"    ChanStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"    SpecStr = "+=-@#~,.[]()!%^*$")// 解析参数func parseArgs() {    flag.IntVar(&length,"l",16,"-l 生成密码长度")    flag.StringVar(&charset,"t","num",        // 反引号以原样输出        `-t 制定密码生成的字符集,        num: 只使用数字,        char: 只使用英文字母,        mix: 使用数字和字母,        advance: 使用数字、字母以及特殊字符`)    flag.Parse()}// 检测字符串中的空格func test1() {    for i := 0; i < len(ChanStr); i++ {        if ChanStr[i] != ' ' {            fmt.Printf("%c",ChanStr[i])        }    }}func generatePasswd() string {    // 初始化密码切片    var passwd []byte = make([]byte,length,length)    // 源字符    var sourceStr string    // 判断字符类型,如果是数字     if charset == "num" {       sourceStr = NUmStr        // 如果选的是混合模式    } else if charset == "char" {        sourceStr = fmt.Sprintf("%s",ChanStr)    } else if charset == "mix" {        sourceStr = fmt.Sprintf("%s%s",NUmStr,ChanStr)        // 如果选的是高级模式    } else if charset == "advance" {        sourceStr = fmt.Sprintf("%s%s%s", NUmStr, ChanStr,SpecStr)    } else {        sourceStr = NUmStr    }     //fmt.Println("source:",sourceStr)    // 遍历,生成一个随机index索引    for i := 0; i < length; i++ {        index := rand.Intn(len(sourceStr))        passwd[i] = sourceStr[index]    }    return string(passwd)}func main() {    // 随机种子    rand.Seed(time.Now().UnixNano())    parseArgs()    //fmt.Printf("length:%d charset:%s\n",length,charset)    // test1()    passwd := generatePasswd()    fmt.Println(passwd)    //fmt.Printf("length:%d charset:%s\n",length, charset)}

转载于:https://www.cnblogs.com/Csir/p/9326922.html

你可能感兴趣的文章
[ZJOI2007]棋盘制作 【最大同色矩形】
查看>>
合并单元格
查看>>
swift-初探webView与JS交互
查看>>
IOS-图片操作集合
查看>>
Android bitmap图片处理
查看>>
Android应用程序进程启动过程的源代码分析
查看>>
adb logcat 命令行用法
查看>>
Redis学习手册(Key操作命令)
查看>>
模板统计LA 4670 Dominating Patterns
查看>>
泛型第23条:请不要在新代码中使用原生态类型
查看>>
非对称加密
查看>>
bzoj 3413: 匹配
查看>>
从下周开始就要采用网上记录值班日志了
查看>>
在qq中可以使用添加标签功能
查看>>
eclipse 自定义布局
查看>>
团队项目开发客户端——登录子系统的设计
查看>>
【AppScan心得】IBM Rational AppScan 无法记录登录序列
查看>>
[翻译] USING GIT IN XCODE [4] 在XCODE中使用GIT[4]
查看>>
简化通知中心的使用
查看>>
SpringMVC的@Validated校验注解使用方法
查看>>