Golang实现一个密码生成器
小地鼠防止有人偷他的果实,在家里上了一把锁。这个锁怎么来的呢?请往下看。。
package main import (
"flag"
"fmt"
"math/rand"
"time"
) var (
length int
charset string
) const (
NUmStr = ""
CharStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
SpecStr = "+=-@#~,.[]()!%^*$"
) //解析参数
func parseArgs() {
//需要接受指针,就传递地址,&
flag.IntVar(&length, "l", , "-l 生成密码的长度")
flag.StringVar(&charset, "t", "num",
//反引号以原样输出
`-t 制定密码生成的字符集,
num:只使用数字[-],
char:只使用英文字母[a-zA-Z],
mix:使用数字和字母,
advance:使用数字、字母以及特殊字符`)
flag.Parse()
} //检测字符串中的空格
func test1() {
for i := ; i < len(CharStr); i++ {
if CharStr[i] != ' ' {
fmt.Printf("%c", CharStr[i])
}
}
} func generatePasswd() string {
//初始化密码切片
var passwd []byte = make([]byte, length, length)
//源字符串
var sourceStr string
//判断字符类型,如果是数字
if charset == "num" {
sourceStr = NUmStr
//如果选的是字符
} else if charset == "char" {
sourceStr = charset
//如果选的是混合模式
} else if charset == "mix" {
sourceStr = fmt.Sprintf("%s%s", NUmStr, CharStr)
//如果选的是高级模式
} else if charset == "advance" {
sourceStr = fmt.Sprintf("%s%s%s", NUmStr, CharStr, SpecStr)
} else {
sourceStr = NUmStr
}
fmt.Println("source:", sourceStr) //遍历,生成一个随机index索引,
for i := ; 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)
}
效果呢?
Golang实现一个密码生成器的更多相关文章
- 请设计 一个密码生成器,要求随机生成4组10位密码(C语言)
请设计 一个密码生成器,要求随机生成4组10位密码(密码只能由字母和数字组成),每一组必须包含至少一个大写字母,每组密码不能相同,输出生成的密码. #include<stdio.h> #i ...
- python写一个密码生成器的类,要求有个类变量,统计一下一共生成过多少个密码。 要求有4个方法,1:构造方法 2 实例方法 3 类方法 4 静态方法
生成指定长度的随机数字密码 生成指定长度的随机字母密码 生成指定长度的随机数字和字母的混合 #encoding=utf-8 import random import string class pa ...
- 1Password:让一个密码记住所有密码
在这个信息大爆炸的时代,我们总有着各种各样的缘由,接触到各种各样的网站和爱屁屁,随之而来的,产生了大量的账号和密码. 每次新注册一个网站的时候,总会纠结一番:到底是新编一个密码呢?还是沿用之前的那一个 ...
- 用golang启动一个daemon
用golang启动一个daemon package main import ( "fmt" "log" "os" "runtime ...
- Java课程设计--GUI密码生成器201521123033
1.团队课程设计题目 基于GUI的密码生成器 团队博客链接 2.个人负责模块 (1)界面设计 (2)部分错误输入的提示 (3)一键复制密码功能的实现 3.个人代码的提交记录截图 4.个人代码展示以及代 ...
- python2.7写的图形密码生成器
#coding:utf8import random,wxdef password(event): a = [chr(i) for i in range(97,123)] b = [chr(i) for ...
- 使用golang写一个redis-cli
使用golang写一个redis-cli 0. redis通信协议 redis的客户端(redis-cli)和服务端(redis-server)的通信是建立在tcp连接之上, 两者之间数据传输的编码解 ...
- 如何使用Golang实现一个API网关
你是否也存在过这样的需求,想要公开一个接口到网络上.但是还得加点权限,否则被人乱调用就不好了.这个权限验证的过程,最好越简单越好,可能只是对比两个字符串相等就够了.一般情况下我们遇到这种需要,就是在函 ...
- Golang封装一个加锁的Map工具包
Golang封装一个加锁的Map工具包 直接上代码了,用的是读写锁,代码如下: package utils import ( "sync" ) type BeeMap struct ...
随机推荐
- ldap快速配置
1.[yum lamp环境] yum -y install httpd httpd-devel mysql mysql-server mysql-devel php php-mysql php-co ...
- form表单提交参数封装
function getFormValues(element,options) { var data = {}; if(element == null || element == undefined) ...
- sssp maven pom
pom <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.or ...
- 8. mybatis实战教程(mybatis in action)之七:实现mybatis分页(源码下载)
转自:https://blog.csdn.net/tangruyi1992/article/details/52584012 上 一篇文章里已经讲到了mybatis与spring MVC的集成,并且做 ...
- 【转】Maven中-DskipTests和-Dmaven.test.skip=true的区别
主要区别是:是否编译测试类 -DskipTests:编译测试类,但不运行 -Dmaven.test.skip=true:不编译.不运行 转自 http://zephiruswt.blog.51cto. ...
- Spring MVC 支持的原生API参数
HttpServletRequest HttpServletResponse HttpSession java.security.Principal Local InputStream OutputS ...
- struts2,servlet和springmvc的单例多例问题
struts2,servlet和springmvc的单例多例问题 原创 2017年06月12日 09:59:21 标签: struts2 / servlet / springmvc / 单例 / 多例 ...
- 软件工程导论九月26号Homework
习题3 (1)数据流图 (2)实体关系图ER 习题6
- hibernate 中一对多的注解配置
//一方@Entity@Table(name="test_classinfo")public class ClassInfo { @Id @SequenceGenerator(na ...
- Group by 内部排序
1.right join # update_time gid=>sid, group_status => s_table select a.* from comment as a ri ...