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 ...
随机推荐
- Flex工程师面试
这几天有一家公司需要招聘Flex开发的工程师,要求开发电力行业的WebGIS的电力方面的程序,当时也是被推荐过去的,随后的几天,自己也准备的一下,因为之前接触Flex的主要是开发一些医疗的项目,利用F ...
- nodejs中https请求失败,无报错
今天群里一位同学在做练习的时候,采用https例子: // curl -k https://localhost:8000/ const https = require('https'); const ...
- vb shell函数在c#的转换
vb shell: Private Sub AddBarcodeImages(ByVal DTab As DataTable) If Not DTab Is Nothing Then DTab.Col ...
- jssip中文开发文档(完整版)
jsSip开发文档 (官网地址:http://www.jssip.net/) 完整案例demo下载地址: http://download.csdn.net/download/qq_39421580/1 ...
- angular 参考文档
https://www.w3schools.com/angular/ 参考二: https://www.angular.cn/guide/reactive-forms
- leetcode455
public class Solution { public int FindContentChildren(int[] g, int[] s) { var listg = g.OrderBy(x = ...
- node 删除文件 和文件夹
删除文件 var fs = require('fs'); fs.unlink(path,callback); 删除文件夹 deleteFolder(path); function deleteFold ...
- SQL2014还原到2008
请使用with move选项来标识该文件的有效位置 sqlserver用命令还原数据库 restore database TT from disk='E:\test.bak' ...
- Spring boot&Mybatis 启动报错 Failed to auto-configure a DataSource
*************************** APPLICATION FAILED TO START *************************** Description: Fai ...
- 列表(ul ol dl)
Title 1 2 3 1 2 3 a 1 2 b 1 2 <!DOCTYPE html> <html lang="en"> <head> &l ...