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 ...
随机推荐
- Spark SQL 编程
Spark SQL的依赖 Spark SQL的入口:SQLContext 官方网站参考 https://spark.apache.org/docs/1.6.2/sql-programming-guid ...
- 学习MongoDB 一:MongoDB 入门(安装与配置)
一.简介 MongoDB一种非关系型数据库(NoSql),是一种强大.灵活.可扩展的数据存储方式,因为MongoDB是文档模型,自由灵活很高,可以让你在开发过程中畅顺无比,对于大数据量.高并发.弱事务 ...
- python学习之----初见网络爬虫(输出整个网页html的代码)
from urllib import urlopen html = urlopen('http://www.manluotuo.com') print (html.read()) 控制台输出整个网页h ...
- uva-167-枚举
题意:八皇后问题,要求选取的总和最大 #include<stdio.h> #include<iostream> #include<sstream> #include ...
- discuz 修改积分策略( 在周期中添加"每周" )
在 source/admincp/admincp_credits.php 文件中, ctrl+f 搜索 $lang['setting_credits_policy_cycletype_1'] 处, ...
- Spring MVC 重定向
@RequestMapping("/testRedirect") public String testRedirect(){ System.out.println("te ...
- Mongodb 安装 和 启动
教程:http://www.mongodb.org.cn/tutorial/59.html 下载 >wget https://fastdl.mongodb.org/linux/mongodb-l ...
- Maven 项目中 添加自己的jar包
mvn install:install-file -Dfile=java-bloomfilter-1.0.jar -DgroupId=com.sina -DartifactId=java-bl ...
- AS3 注意点
当主类new 一个主影片来放内容的时候.在gc此swf时,一定要检查此主影片是否存在,如 private function initStart() { //trace("RightMenu类 ...
- Simple2D-25 精灵动作
精灵动画作用在精灵上,使精灵表现出动画效果.本文将详细说明如何创建一个简单的动作系统,暂时只有 4 中基本的动作——平移.旋转.缩放和 Alpha 变化,并且这些动作能够自由组合,组成串行动作或并行动 ...