• 【无标题】


    Python生成密码字典写入文件算法


    如果有其他可以提高时空复杂度的算法可以优化一下

    简介

    密码字典生成原理比较简单,主要靠正常的按序叠加生成,故所需时间以及较大的内存资源

    主要原理

    首先定义一个密码字典所需的资源表,然后用循环生成一个所有的一位密码的密码本,然后读取该密码本并在其第二位依次添加新元素生成二位密码,依此循环生成多位密码

    代码

    #该密码字典生成算法所需调用的内存资源较大,四位密码生成速度较快,五位及以上所需时间和空间随几何倍数增长
    #定义一个所需密码元素的表
    lis=[1,2,3,4,5,6,7,8,9,0,'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','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',',','.','/','?','<','>','{','}',';',':',' ','"','[',']','`','~','!','@','#','$','%','^','&','*','(',')','_','-','+','=','|']
    
    #以下函数为用以生成新密码的函数,读取已有密码的一行用循环加上新元素
    def mk(nu,nam):
        name1=str(nam)+str(nu)+'.'+'txt'
        nu=nu+1
        name2=str(nam)+str(nu)+'.'+'txt'
        f=open(name1)
        line = f.readline()
        while line:
            f1=open(name2,'a')
            line = line.strip('\n')
            for j in lis:
                f1.write(str(line)+str(j)+'\n')
            line=f.readline()
            f1.close()
        f.close()
    
    #该函数用以将各个位的密码写入到统一的密码文件中
    def fin(nu1,nam1):
        name3=str(nam1)+str(nu1)+'.'+'txt'
        name4=str(nam1)+'.'+'txt'
        f=open(name3)
        line=f.readline()
        while line:
            f1=open(name4,'a')
            line=line.strip('\n')
            f1.write(str(line)+'\n')
            line=f.readline()
            f1.close()
        f.close()
    
    number=int(input('请输入密码位数:'))
    passbook=str(input('请输入密码本名字:'))
    
    #将密码所需的参数统一格式
    passbook1=str(passbook)+'0'+'.'+'txt'
    number1=number-1
    
    #将一位的密码写入密码本
    f=open(passbook1,'a')
    for i in lis:
        f.write(str(i)+'\n')
    f.close()
    
    #生成其他位的密码本
    for i in range(number1):
        passbook=str(passbook)
        mk(i,passbook)
    
    #将所生成密码统一到一个文本中
    for i in range(number):
        passbook=str(passbook)
        fin(i,passbook)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
  • 相关阅读:
    多维下numpy实现torch下的log_softmax
    【Java并发入门】02 Java内存模型:看Java如何解决可见性和有序性问题
    物联网微消息队列MQTT介绍-EMQX集群搭建以及与SpringBoot整合
    Paper Time|开放式时空大数据助力智能公交路线规划
    DOS路径与NT路径转换(Win32, C++)
    Flink 1.13(八)CDC
    1651. Hopper 公司查询 III
    【CAPL】XMLTestModule XML文件模板
    细胞膜修饰多肽/多糖/红细胞膜/仿生细胞膜载蛋白/聚乙二醇修饰细胞膜的制备
    微服务(十六)——Seata 分布式事务框架
  • 原文地址:https://blog.csdn.net/qq_42452450/article/details/125598655