很早之前写过一个篇 利用pwgen、mkpasswd、tr自动更改密码,后来又狗尾了篇用Linux命令行生成随机密码的十种方法 。前面至少还算是个系统功能,后面越来越写越成烂大街的东西了。即然再烂了,不怕再加一个python版的生成随机密码的篇幅。

一、版本1

先来个详述版的,这里相当于主机讲了下random模块和string模块里一些方法,代码如下:

#! /usr/bin/env python

# -*- coding: utf-8 -*-

#@author 运维之路(www.361way.com)

import string

from os import urandom

from random import choice

'''

Linux正则命名参考:http://vbird.dic.ksu.edu.tw/linux_basic/0330regularex.php#lang

[:alnum:]代表英文大小写字节及数字,亦即 0-9, A-Z, a-z

[:alpha:]代表任何英文大小写字节,亦即 A-Z, a-z

[:blank:]代表空白键与 [Tab] 按键两者

[:cntrl:]代表键盘上面的控制按键,亦即包括 CR, LF, Tab, Del.. 等等

[:digit:]代表数字而已,亦即 0-9

[:graph:]除了空白字节 (空白键与 [Tab] 按键) 外的其他所有按键

[:lower:]代表小写字节,亦即 a-z

[:print:]代表任何可以被列印出来的字节

[:punct:]代表标点符号 (punctuation symbol),亦即:" ' ? ! ; : # $...

[:upper:]代表大写字节,亦即 A-Z

[:space:]任何会产生空白的字节,包括空白键, [Tab], CR 等等

[:xdigit:]代表 16 进位的数字类型,因此包括: 0-9, A-F, a-f 的数字与字节

Python自带常量(本例中改用这个,不用手工定义了)

string.digits #十进制数字:0123456789

string.octdigits #八进制数字:01234567

string.hexdigits #十六进制数字:0123456789abcdefABCDEF

string.ascii_lowercase #小写字母(ASCII):abcdefghijklmnopqrstuvwxyz

string.ascii_uppercase #大写字母(ASCII):ABCDEFGHIJKLMNOPQRSTUVWXYZ

string.ascii_letters #字母:(ASCII)abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

string.punctuation #标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

以下的不用,有locale问题

string.lowercase #abcdefghijklmnopqrstuvwxyz

string.uppercase #ABCDEFGHIJKLMNOPQRSTUVWXYZ

string.letters #ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

以下的不能用

string.whitespace #On most systems this includes the characters space, tab, linefeed, return, formfeed, and vertical tab.

string.printable #digits, letters, punctuation, and whitespace

'''

#请在此设置您要生成的密码需求

passwd_length = 20 #密码长度

passwd_count = 100 #密码个数

passwd_seed = string.digits + string.ascii_letters + string.punctuation #密码种子

#passwd_seed = string.digits

#passwd_seed = string.digits + string.ascii_letters

def generate_passwd():

'''Function to generate a password'''

passwd = []

while (len(passwd) < passwd_length):

passwd.append(choice(passwd_seed))

return ''.join(passwd)

def print_string_constants():

'''Test Case'''

print string.digits

print string.octdigits

print string.hexdigits

print string.ascii_lowercase

print string.ascii_uppercase

print string.ascii_letters

print string.punctuation

print string.lowercase

print string.uppercase

print string.letters

print (string.printable + "ooo")

print string.whitespace

print '\n\n'

if __name__ == '__main__':

for i in range(0, passwd_count):

print generate_passwd()

这个版本不要看着长,其实很多代码没用,为了便于理解加上去上的,真正用的只是上面的import部分+ gen_pass函数部分 + main函数 。

二、版本2

#!/usr/bin/env python

# -*- coding=utf-8 -*-

import random, string#导入random和string模块

def GenPassword(length):

#随机出数字的个数

numOfNum = random.randint(1,length-1)

numOfLetter = length - numOfNum

#选中numOfNum个数字

slcNum = [random.choice(string.digits) for i in range(numOfNum)]

#选中numOfLetter个字母

slcLetter = [random.choice(string.ascii_letters) for i in range(numOfLetter)]

#打乱组合

slcChar = slcNum + slcLetter

random.shuffle(slcChar)

#生成随机密码

getPwd = ''.join([i for i in slcChar])

return getPwd

if __name__ == '__main__':

print GenPassword(6)

该版本代码略多,只不过其中指定必须有数字,必须有字母,当然再改下,你还可以指定必须有特殊符号。

三、版本3

from random import randrange, sample

#定义列表

password_list = ['z','y','x','w','v','u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a',

'0','1','2','3','4','5','6','7','8','9',

'!','@','#','$','%','^','&','*','(',')','_','+','-','=',

'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'

]

leng=15 #定义长度

password = "".join(sample(password_list, leng)).replace(' ', '')

print(password)

这里只是给了一个全示例,其实真实使用中时,如果上面的sting码表如果都要的话,直接使用上面的sting里的方法更好,不过往往为了使密码便于区分,会将I、l(小写L)、1(数字1)、O与0(数字零)等去掉。这样使用版本3就比较不错。

四、版本4

#-*- coding:utf-8 -*-

'''

简短地生成随机密码,包括大小写字母、数字,可以指定密码长度

'''

#生成随机密码

from random import choice

import string

#python3中为string.ascii_letters,而python2下则可以使用string.letters和string.ascii_letters

def GenPassword(length=8,chars=string.ascii_letters+string.digits):

return ''.join([choice(chars) for i in range(length)])

if __name__=="__main__":

#生成10个随机密码

for i in range(10):

#密码的长度为8

print(GenPassword(8))

代码简少,是版本1的一个更简化版本的变种,来自于python cookbook上的方法。

python生成10个随机密码_python生成随机密码相关推荐

  1. python随机生成10个浮点数_python生成10个随机数

    这篇文章主要介绍了Python生成随机数的方法,有需要的朋友可以参考一下. 如果你对在Python生成随机数与random模块中最常用的几个函数的关系与不懂之处,下面的文章就是对Python生成随机数 ...

  2. python请编写程序、生成随机密码_python生成随机密码串

    今天修改服务器密码,想来想去不知道设置什么密码比较好,索性设置随机数吧.python当中的random模块可以生成随机数,主要用这个生成随机密码. 顺便在讲一下string模块中的3个函数:strin ...

  3. python合并pdf 加书签_Python生成pdf目录书签的实例方法

    有时候我们用的一些pdf资料是没有目录的,这样找寻我们想到的东西比较麻烦.本篇文章就为大家带来python来生成pdf目录书签的方法. 首先,我们需要下载一个软件FreePic2Pdf,利用它我们可以 ...

  4. python随机生成10个奇数_python怎么随机生成奇数

    python随机生成奇数的方法: 实现思路: 1.需要用到random模块 2.用列表展现给用户 3.检查这个数是否为奇数,在用append的方法将为奇数的随机数写入列表中 4.为了保证能输入与用户输 ...

  5. python生成多个列表_python生成多个只含0,1元素的随机数组或列表(代码)

    python生成多个只含0,1元素的随机数组或列表(代码) >>> import numpy as np >>> myarray= np.random.randin ...

  6. python生成二维码_python生成二维码的实例详解

    python生成二维码的实例详解 版本相关 操作系统:Mac OS X EI Caption Python版本:2.7 IDE:Sublime Text 3 依赖库 Python生成二维码需要的依赖库 ...

  7. python宣传视频 抖音_Python生成抖音字符视频,技术流!

    抖音字符视频在去年火过一段时间. 反正我是始终忘不了那段极乐净土的音乐- 这一次自己也来实现一波,做一个字符视频出来. 主要用到的库有cv2,pillow库. 原视频,直接抖音下载的,妥妥的水印. / ...

  8. python生成随机整数列表_python生成随机整数

    原博文 2019-10-08 11:09 − python生成随机不重复的整数,用random中的sample index = random.sample(range(0,10),10) 上面是生成不 ...

  9. python有四个数字_Python生成0-9任意4位数字组合的方法

    玩蛇网本文是关于Python生成0-9任意4位数字组合的方法示例.0-9个数字组成任意4位数字,有多少种排列组合的方式,要是用想的需要不少时间而且还容易出错.用python方法来解决这个问题显然简单得 ...

最新文章

  1. usaco Overfencing 穿越栅栏(BFS)
  2. DataList分页
  3. VirtualBox下Ubuntu利用桥接方式上网
  4. 配置VNC并远程控制服务器(电脑)
  5. Mybatis处理表关联(懒加载)
  6. QT安装和Hello,world
  7. mysql 5.6加用户_Mysql 5.6添加修改用户名和密码的方法
  8. android camera(3)--- 高通平台8916 camera移植
  9. 联合概率,条件概率,边缘概率的通俗理解
  10. STM32G030C8T6跑马灯程序V0.2(四)
  11. 数学建模入门例题python_用Python分析支付宝轻定投收益--Python数学建模实例
  12. 北大计算机就业报告,北京大学信息科学技术学院解读和毕业生就业统计
  13. 串口协议模板及其参数配置
  14. selenium如何通过快捷键关闭浏览器打开的新页签
  15. Git 核心概念:工作区与暂缓区(添加提交及查看状态充分体现)
  16. 什么是序列化 怎么序列化 为什么序列化
  17. 电脑远程控制,自动重启,断电重启,网络自动连接
  18. Xilinx AXI GPIO学习笔记以及问题点
  19. 预告:揭秘7*24小时用数学解码交易的神秘玩家,量化交易者——TokenInsight对话首席...
  20. 如何从Mac电脑的时间机器中查看恢复特定文件夹备份?

热门文章

  1. stm32流水灯c语言程序,stm32流水灯程序源码
  2. Word2016自第3页开始添加连续页脚(除掉封面和目录)
  3. 一些俗语,不思八九,常想一二
  4. ios 图标 圆角 大小
  5. 被认证的虫子,吃着才放心 | 独家
  6. 阿里云部署Tiny Tiny RSS踩坑笔记
  7. 创世纪元java游戏,创世纪元
  8. 计算机组成原理——计算机硬件组成原理(冯诺依曼和现代计算机)
  9. 白天嗜睡很可能是表观遗传变化的结果
  10. 有计算机考试励志的文案,抖音冲刺高考励志文案