pythonランダムパスワード辞書ジェネレータの実装例

1088 ワード

すべてのパスワードを窮挙しようとすると、アルゴリズムはネストが深すぎるか、特にメモリが消費される(オーバーフローする).その後、簡単な繰り返し確率の低いアルゴリズムを選んだ.コードは次のとおりです.
 
  
# -*- coding:utf-8 -*-
'''
 @ function:
'''
import random
class Dictor():
    CSet=' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~!@#$%^&*()_-+=/*<>:;\'"[]{}|'
    def __init__(self,minlen,maxlen):
        if maxlen>minlen:
            self.__minlen=minlen
            self.__maxlen=maxlen
        else:
            self.__minlen=maxlen
            self.__maxlen=minlen
    def __iter__(self):
        return self
    def __next__(self):
        ret=''
        for i in range(0,random.randrange(self.__minlen,self.__maxlen+1)):
            ret+=random.choice(Dictor.CSet)
        return ret
if __name__=='__main__':
    for str in Dictor(6,16):
        print(str)