Golang实现一个密码生成器

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

package main

import (
    "flag"
    "fmt"
    "math/rand"
    "time"
)

var (
    length  int
    charset string
)

const (
    NUmStr  = "0123456789"
    CharStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    SpecStr = "[email protected]#~,.[]()!%^*$"
)

//解析参数
func parseArgs() {
    //需要接受指针,就传递地址,&
    flag.IntVar(&length, "l", 16, "-l 生成密码的长度")
    flag.StringVar(&charset, "t", "num",
        //反引号以原样输出
        `-t 制定密码生成的字符集,
        num:只使用数字[0-9],
        char:只使用英文字母[a-zA-Z],
        mix:使用数字和字母,
        advance:使用数字、字母以及特殊字符`)
    flag.Parse()
}

//检测字符串中的空格
func test1() {
    for i := 0; 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 := 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/pyyu/p/8664255.html

时间: 2024-10-12 09:26:47

Golang实现一个密码生成器的相关文章

密码生成器是如何做的?

微软GUID JUID 还有vpn密码生成器 最后还要做一个系统启动的服务

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

在这个信息大爆炸的时代,我们总有着各种各样的缘由,接触到各种各样的网站和爱屁屁,随之而来的,产生了大量的账号和密码. 每次新注册一个网站的时候,总会纠结一番:到底是新编一个密码呢?还是沿用之前的那一个密码呢?编个新密码明天就忘了,下次白想半天还得重新注册一次:用以前的密码呢,所有的号都是一个密码,简直就是坑. 微信扣扣等社交账号有掌握了我大量的信息,也不敢轻易授权登录. 对于日益庞大的密码队伍,每次需要用到的时候,只能随缘,能想起能找到最好,找不到也就只有扭扭屁股再来一次.总是在想有没有一个密码

【Python】密码生成器

import random import string print("欢迎使用密码生成器") def passlength(): print("你想要多长的密码:") global passlen try: input1=input() passlen=int(input1) except: print("请输入一个数字") passlength() if passlen<5: print("太短了??") passle

Python密码生成器

密码生成器: 密码格式为:密码+空格+字符(随机产生自定义长度) 10.1.1.1 %V!Z{#2)9G,- 10.1.1.2 xWIg;9zIdn?} 10.1.1.3 )[email protected] 10.1.1.4 sX<_?Z.<yd9& 10.1.1.5 Y{Zy[ym6z.,O 10.1.1.6 [qbXiBt37Rcu 10.1.1.7 )Xs7t6[^NlDP 10.1.1.8 H4CwO!!W8fAZ 10.1.1.9 #;VXI4lgawIx 10.1.1.1

做了一个密码强度输入测试

<!doctype html> <html> <head> <meta charset="utf-8"> <title>密码强度输入测试</title> <style type="text/css"> .cont { margin-left:300px; margin-top:50px; border:solid 1px #ccc; width:520px; padding:20px

密码生成器

诗词密码生成器 ,地址: http://saas.janusec.com/password/generator (我们不生产无意义的乱码!只让密码满足强度要求,又变得有意义.有趣.好记!) 生成的密码举例: 娉娉袅袅十三余,豆蔻梢头二月初.(Ppnn13yDkstFeb.c) 飞流直下三千尺,疑似银河落九天.(Flzx3000cY4yhl9t) 池上碧苔三四点,叶底黄鹂一两声.(Csbt34.Ydhl12s) 一道残阳铺水中,半江瑟瑟半江红.(1dcypsz1/2jss1/2jh) 停车坐爱枫林

Timus 1404. Easy to Hack! 有一个密码问题

When Vito Maretti writes an important letter he encrypts it. His method is not very reliable but it's enough to make any detective understand nothing in that letter. Sheriff doesn't like such state of affairs. He wants to hack the cipher of Vito Mare

go的变量redeclare的问题,golang的一个小坑

go的变量声明有几种方式: 1 通过关键字 var 进行声明 例如:var i int   然后进行赋值操作 i = 5 2 最简单的,通过符号 := 进行声明和赋值 例如: i:=5 golang会默认它的类型 下面看一段代码,我们先声明一个变量a,然后再重新声明变量a,b,在这个函数中,变量a被声明了2次,成为a的重声明(redeclare),执行结果为23 package main import ( "fmt" ) func main(){ a:=1 a,b:=2,3 fmt.P

Python练习题9(密码判断):请写一个密码安全性检查的代码代码: 首先判断密码的强度,如果结果是低或中则打印如何提升密码安全级别的提示,而高则直接退出

'''请写一个密码安全性检查的代码代码:首先判断密码的强度,如果结果是低或中则打印如何提升密码安全级别的提示,而高则直接退出 # 密码安全性检查代码## 低级密码要求:# 1. 密码由单纯的数字或字母组成# 2. 密码长度小于等于8位## 中级密码要求:# 1. 密码必须由数字.字母或特殊字符(仅限:[email protected]#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合# 2. 密码长度不能低于8位## 高级密码要求:# 1. 密码必须由数字.字母及特殊字符