随机生成密码

#! /usr/bin/env python
# -*- coding:utf-8 -*-

import random
 
maybe = '0123456789'\
        'abcdefghijklmnopqrstuvwxyz'\
        'ABCDEFGHIJKLMNOPQRSTUVWXYZ'\
        '~!@#$%^&*()_+'
 
maybesize = len(maybe)
_D, _L, _U, _S = 1, 2, 4, 8
_FULL = _D| _L| _U| _S
_DLU_ = _D| _L| _U
 
def _rbit(p): return maybe[random.randint(0,maybesize-1)]
 
def generate(l):
    return ''.join(map(_rbit, xrange(l)))
 
def chk(pwd, chklogic = _FULL):
    d, l, u, s = 0, 0, 0, 0
    for c in pwd:
        if c in 'abcdefghijklmnopqrstuvwxyz':
            l = _L
        elif c in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
            u = _U
        elif c in '0123456789':
            d = _D
        elif c in '~!@#$%^&*()_+':
            s = _S
    return (l|u|d|s) == chklogic
 
 
def groupGenerate(cnt, chklogic = _FULL):
    pwds = []
    while cnt:
        pwd = generate(16)
        if chk(pwd, chklogic):
            pwds.append(pwd)
            cnt -= 1
    print '\n'.join(pwds)


if __name__ == '__main__':
    groupGenerate(cnt = 16)
    print '-'*16
    groupGenerate(cnt = 16, chklogic = _DLU_)

你可能感兴趣的:(密码,随机生成,字母,数字,标点符号,python)