python设置默认密码_使用Python生成随机密码的示例分享

生成随机密码这件事情用python来干确实相当的方便,优美的string方法加上choice简直是绝配

make_password.py

###简单几行代码执行即可生成记不住的字符串###

$ python make_passwd.py

DLrw9EiT

Qs4Wm84q

RQwl4L2L

u9g0LgwW

jHPtYdyU

...

$ python make_passwd.py

DLrw9EiT

Qs4Wm84q

RQwl4L2L

u9g0LgwW

jHPtYdyU

...

代码如下——注释比代码长

#!/usr/bin/python

#--coding:utf-8--#

#-------------------------------------------------------------------------------

# Name: make_passwd

#

# Author: LiuSha

#

# Created: 28/12/2014

# Copyright: (c) WDZJ-SA 2014

#-------------------------------------------------------------------------------

from random import choice

import string

def Makepass(length=8, chars=string.letters+string.digits):

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

if __name__ == '__main__':

for i in range(10):

print Makepass()

##下例基本上就是这个小脚本的所有工作核心了,使用random模块的choice方法取string模块生成的字符串##

>>> string.letters

'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

>>> string.digits

'0123456789'

>>> choice(string.digits)

'4'

>>> choice(string.letters)

'T'

##有关生成器可参考:http://www.ipython.me/python/python-generator.html##

#!/usr/bin/python

#--coding:utf-8--#

#-------------------------------------------------------------------------------

# Name: make_passwd

#

# Author: LiuSha

#

# Created: 28/12/2014

# Copyright: (c) WDZJ-SA 2014

#-------------------------------------------------------------------------------

from random import choice

import string

def Makepass(length=8, chars=string.letters+string.digits):

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

if __name__ == '__main__':

for i in range(10):

print Makepass()

##下例基本上就是这个小脚本的所有工作核心了,使用random模块的choice方法取string模块生成的字符串##

>>> string.letters

'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

>>> string.digits

'0123456789'

>>> choice(string.digits)

'4'

>>> choice(string.letters)

'T'

##有关生成器可参考:http://www.ipython.me/python/python-generator.html##

生成一些人似乎能好记一些的密码(Qs4Wm84q这种密码似乎除了复制粘贴没有别的选择,话说前年我使用shell生成的类似的密码给ldap做默认密码,我当时公司就真有员工把这样的密码背下来了,现在想想真心是厉害~~~)。

##这样看起来是比上面的好记一点了吧,但需要提供一个字典文件##

$ python make_dictpass.py 1 8 1

ipythosd

$ python make_dictpass.py

nahontchen

chenyibfeo

ipythoniue

coreostche

...

$ python make_dictpass.py 1 8 1

ipythosd

$ python make_dictpass.py

nahontchen

chenyibfeo

ipythoniue

coreostche

...

代码如下

#!/usr/bin/python

#--coding:utf-8--#

#-------------------------------------------------------------------------------

# Name: make_dictpass

#

# Author: LiuSha

#

# Created: 28/12/2014

# Copyright: (c) WDZJ-SA 2014

#-------------------------------------------------------------------------------

import random

import string

class passwd():

data = open('./word.txt').read().lower()

def renew(self, n, maxmem=3):

self.chars = []

for i in range(n):

randspot = random.randrange(len(self.data))

self.data = self.data[randspot:] + self.data[:randspot]

where = -1

locate = ''.join(self.chars[-maxmem:])

while where < 0 and locate: where = self.data.find(locate) locate = locate[1:] c = self.data[where+len(locate)+1] if not c.islower(): c = random.choice(string.lowercase) self.chars.append(c) def __str__(self): return ''.join(self.chars) if __name__ == '__main__': import sys ##如果带参数的话可以定义生成密码的次数,长度,追溯记录## if len(sys.argv) > 1:

dopass = int(sys.argv[1])

else:

dopass = 8

if len(sys.argv) > 2:

length = int(sys.argv[2])

else:

length = 10

if len(sys.argv) > 3:

memory = int(sys.argv[3])

else:

memory = 3

onepass = passwd()

for i in range(dopass):

onepass.renew(length,memory)

print onepass

##字典文件(可以是各种单词的组合)##

$ cat word.txt

chenyi

itchenyi

python

ipython

coreos

coreos.me

ipython.me

#!/usr/bin/python

#--coding:utf-8--#

#-------------------------------------------------------------------------------

# Name: make_dictpass

#

# Author: LiuSha

#

# Created: 28/12/2014

# Copyright: (c) WDZJ-SA 2014

#-------------------------------------------------------------------------------

import random

import string

class passwd():

data = open('./word.txt').read().lower()

def renew(self, n, maxmem=3):

self.chars = []

for i in range(n):

randspot = random.randrange(len(self.data))

self.data = self.data[randspot:] + self.data[:randspot]

where = -1

locate = ''.join(self.chars[-maxmem:])

while where < 0 and locate: where = self.data.find(locate) locate = locate[1:] c = self.data[where+len(locate)+1] if not c.islower(): c = random.choice(string.lowercase) self.chars.append(c) def __str__(self): return ''.join(self.chars) if __name__ == '__main__': import sys ##如果带参数的话可以定义生成密码的次数,长度,追溯记录## if len(sys.argv) > 1:

dopass = int(sys.argv[1])

else:

dopass = 8

if len(sys.argv) > 2:

length = int(sys.argv[2])

else:

length = 10

if len(sys.argv) > 3:

memory = int(sys.argv[3])

else:

memory = 3

onepass = passwd()

for i in range(dopass):

onepass.renew(length,memory)

print onepass

##字典文件(可以是各种单词的组合)##

$ cat word.txt

chenyi

itchenyi

python

ipython

coreos

coreos.me

ipython.me

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值