小地鼠防止有人偷他的果实,在家里上了一把锁。这个锁怎么来的呢?请往下看。。

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实现一个密码生成器的更多相关文章

  1. 请设计 一个密码生成器,要求随机生成4组10位密码(C语言)

    请设计 一个密码生成器,要求随机生成4组10位密码(密码只能由字母和数字组成),每一组必须包含至少一个大写字母,每组密码不能相同,输出生成的密码. #include<stdio.h> #i ...

  2. python写一个密码生成器的类,要求有个类变量,统计一下一共生成过多少个密码。 要求有4个方法,1:构造方法 2 实例方法 3 类方法 4 静态方法

    生成指定长度的随机数字密码 生成指定长度的随机字母密码 生成指定长度的随机数字和字母的混合 #encoding=utf-8   import random import string class pa ...

  3. 1Password:让一个密码记住所有密码

    在这个信息大爆炸的时代,我们总有着各种各样的缘由,接触到各种各样的网站和爱屁屁,随之而来的,产生了大量的账号和密码. 每次新注册一个网站的时候,总会纠结一番:到底是新编一个密码呢?还是沿用之前的那一个 ...

  4. 用golang启动一个daemon

    用golang启动一个daemon package main import ( "fmt" "log" "os" "runtime ...

  5. Java课程设计--GUI密码生成器201521123033

    1.团队课程设计题目 基于GUI的密码生成器 团队博客链接 2.个人负责模块 (1)界面设计 (2)部分错误输入的提示 (3)一键复制密码功能的实现 3.个人代码的提交记录截图 4.个人代码展示以及代 ...

  6. python2.7写的图形密码生成器

    #coding:utf8import random,wxdef password(event): a = [chr(i) for i in range(97,123)] b = [chr(i) for ...

  7. 使用golang写一个redis-cli

    使用golang写一个redis-cli 0. redis通信协议 redis的客户端(redis-cli)和服务端(redis-server)的通信是建立在tcp连接之上, 两者之间数据传输的编码解 ...

  8. 如何使用Golang实现一个API网关

    你是否也存在过这样的需求,想要公开一个接口到网络上.但是还得加点权限,否则被人乱调用就不好了.这个权限验证的过程,最好越简单越好,可能只是对比两个字符串相等就够了.一般情况下我们遇到这种需要,就是在函 ...

  9. Golang封装一个加锁的Map工具包

    Golang封装一个加锁的Map工具包 直接上代码了,用的是读写锁,代码如下: package utils import ( "sync" ) type BeeMap struct ...

随机推荐

  1. python爬虫小试

  2. Centos 克隆后端口eth1怎么改回eth0

    复制或克隆后成功并做好后续问题的虚拟机 修改网卡地址vi /etc/udev/rules.d/70-persistent-net.rules 配置ifcfg-eth0脚本,注意HWADDR那行,要和上 ...

  3. 用深度学习LSTM炒股:对冲基金案例分析

    英伟达昨天一边发布“全球最大的GPU”,一边经历股价跳水20多美元,到今天发稿时间也没恢复过来.无数同学在后台问文摘菌,要不要抄一波底嘞? 今天用深度学习的序列模型预测股价已经取得了不错的效果,尤其是 ...

  4. python的分支循环

    知识内容: 1.if-else分支结构 2.while循环 3.for循环 4.循环结构综述 5.break和continue语句 一.if-else分支结构 1.单分支选择结构 if 表达式: 语句 ...

  5. hibernate vs ibatis

    主要通过 灵活性,性能,开发速度 三个角度来看 1.ibatis非常简单易学,hibernate相对较复杂,门槛较高.  2.二者都是比较优秀的开源产品  3.当系统属于二次开发,无法对数据库结构做到 ...

  6. foreach的使用

    //foreach循环语句,常用来遍历数组,一般有两种使用方法:不取下标,取下标 //不取下表 foreach(数组 as 值) { //执行的程序 echo 值; } //取下标 foreach(数 ...

  7. java中正则表达式,编译报错:Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )

    转自:https://www.cnblogs.com/EasonJim/p/6561666.html 若出现:Invalid escape sequence (valid ones are  \b   ...

  8. Eclipse “cannot be resolved to a type”

    遇到这坑爹的问题,网上各种答案. 只有这个能解决我的问题,eclipse机制问题: Eclipse “cannot be resolved to a type”

  9. 怎么才能将文件流或者图片转化为base64,传到前台展示

    图片转化为base64,传到前台展示 public String getBase64(){ String imgStr = ""; try { File file = new Fi ...

  10. shelve模块使用说明

    一种字典形式储存数据的方式 import datetime, shelve d = shelve.open('shelve_test.txt') info = {'age':22, 'job':'it ...