900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > python123随机密码生成器_python密码生成器的3种方法

python123随机密码生成器_python密码生成器的3种方法

时间:2023-01-23 15:49:43

相关推荐

python123随机密码生成器_python密码生成器的3种方法

# -*- coding: UTF-8 -*-

'''

32-47:空格 ! " # $ % & ' ( ) * + , - . /

48-57:0-9

58-64:: ; < = > ? @

65-90:A-Z

91-96:[ 反斜杠 ] ^ _ `

97-122:a-z

123-126:{ | } ~

'''

import itertools

import random

from scipy.special import comb, perm

'''

这个方法比较方便快捷,但是比较消耗内存,内存不大,会内存溢出

'''

def products(length=5):

chars=''.join([chr(i) for i in range(32,127)])

for i in itertools.product(chars, repeat = length):

string = ''.join(i)

print(string)

'''

这个方法运行速度快,但是容易遗漏

'''

def random_str(code_len=5):

chars=''.join([chr(i) for i in range(32,127)])

code_count=int(comb(len(chars),code_len))

count= 0

while count < code_count:

checkcode= ''

for i in range(code_len):

j=random.randint(0,len(chars)-1)

checkcode+= chars[j]

print(checkcode)

count+=1

'''

这个方法综合前两种,内存消耗不大,运行速度一般

'''

def sub_list(length=5):

chars = [chr(j) for i in range(length) for j in range(32,127)]

for i in range(1 << len(chars)):

combo_list = []

for j in range(len(chars)):

if i & (1 << j):

combo_list.append(chars[j])

sub_list_len = len(combo_list)

if sub_list_len != length:

continue

else:

sub_str = ''.join(combo_list)

print(sub_str)

def main():

products()

random_str()

sub_list()

if __name__ == '__main__':

main()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。