Python 生成账号密码算法

有个需求,需要伪造跟用户行为非常类似的账号密码,而且需要一个阀值控制伪造的数量。

在这需求上,还有一个就是需要控制生成的比率、跳出率不能过高或者太低。

对此就随手用python写了一个,bug不知道有木有,没有测,具体有兴趣可以去改改。

#coding:utf-8

import random

class create_data:
    global zimu_xx,zimu_dx,number,teshu
    # 生成26个英文字母,大小写
    zimu_xx=[chr(i) for i in range(97,123)]
    zimu_dx=[chr(i).upper() for i in range(97,123)]
    # 生成随机的数字范围在(1-8000)
    number=[i for i in range(1,8001)]
    # 生成特殊字符串
    teshu=[‘!‘,‘@‘,‘#‘,‘$‘,‘%‘,‘^‘,‘&‘,‘*‘,‘(‘,‘)‘,‘_‘,‘+‘,‘-‘,‘=‘,‘|‘,‘}‘,‘{‘,‘[‘,‘]‘,‘;‘,‘"‘,‘,‘,‘<‘,‘>‘,‘.‘,‘?‘,‘/‘]

    def __init__(self):
        self.u_1=0
        self.u_2=0
        self.u_3=0
        self.u_4=0
        self.p_1=0
        self.p_2=0
        self.p_3=0
        self.p_4=0
        self.p_5=0
        self.p_6=0

    def username(self):
        # 随机判断标准
        task=random.randint(0,10)
        # 结果列表
        results_all=[]
        # 字母结果
        results_letters=[]
        # 数字结果
        results_digital=[]

        try:
            if (task>0 and task<3):
                self.u_1=self.u_1+1
                while len(results_letters)<4:
                    results_letters.append(random.choice(zimu_xx))
                results_all.append("".join(results_letters))
                while True:
                    if random.choice(number)<1500:
                        results_all.append(random.choice(number))
                        break
                    else:
                        continue
                return results_all[0].encode(‘utf-8‘)+str(results_all[1])
            elif (task>3 and task<6):
                self.u_2=self.u_2+1
                while len(results_letters)<5:
                    results_letters.append(random.choice(zimu_xx))
                results_all.append("".join(results_letters))
                while True:
                    if random.choice(number)>1500 and random.choice(number)<3000:
                        results_all.append(random.choice(number))
                        break
                    else:
                        continue
                return results_all[0].encode(‘utf-8‘)+str(results_all[1])
            elif (task>6 and task<9):
                self.u_3=self.u_3+1
                while len(results_letters)<6:
                    results_letters.append(random.choice(zimu_xx))
                results_all.append("".join(results_letters))
                while True:
                    if random.choice(number)>3000 and random.choice(number)<6000:
                        results_all.append(random.choice(number))
                        break
                    else:
                        continue
                return results_all[0].encode(‘utf-8‘)+str(results_all[1])
            else:
                self.u_4=self.u_4+1
                temp=[]
                while len(results_letters)<3:
                    results_letters.append(random.choice(zimu_xx))
                results_all.append("".join(results_letters))
                while True:
                    if random.choice(number)>6000 and random.choice(number)<8000:
                        results_all.append(random.choice(number))
                        break
                    else:
                        continue
                while len(temp)<3:
                    temp.append(random.choice(results_letters))
                results_all.append("".join(temp))
                return results_all[0]+str(results_all[1])+results_all[2]

        except IndexError,e:
            pass

    def passwd(self):
        # 随机判断标准
        task=random.randint(0,15)
        # 结果列表
        results_all=[]
        # 字母结果(大写)
        results_letters_big=[]
        # 字母结果(小写)
        results_letters_small=[]
        # 数字结果
        results_digital=[]
        # 特殊字符
        results_special_characters=[]
        try:
            if (task>0 and task<3):
                self.p_1=self.p_1+1
                while len(results_letters_big)<3:
                    results_letters_big.append(random.choice(zimu_dx))
                while len(results_letters_small)<3:
                    results_letters_small.append(random.choice(zimu_xx))
                results_all.append("".join(results_letters_big))
                results_all.append("".join(results_letters_small))
                while len(results_special_characters)<3:
                    results_special_characters.append(random.choice(teshu))
                results_all.append("".join(results_special_characters))
                while True:
                    test_num=[i for i in range(200,800)]
                    if random.choice(test_num)>300 and random.choice(test_num)<600:
                        results_all.append(random.choice(test_num))
                        break
                    else:
                        continue
                return results_all[0]+results_all[1]+results_all[2]+str(results_all[3])

            elif (task>3 and task<4):
                self.p_2=self.p_2+1
                while len(results_letters_big)<4:
                    results_letters_big.append(random.choice(zimu_dx))
                while len(results_letters_small)<3:
                    results_letters_small.append(random.choice(zimu_xx))
                results_all.append("".join(results_letters_big))
                results_all.append("".join(results_letters_small))
                while len(results_special_characters)<4:
                    results_special_characters.append(random.choice(teshu))
                results_all.append("".join(results_special_characters))
                while True:
                    test_num=[i for i in range(500,1400)]
                    if random.choice(test_num)>600 and random.choice(test_num)<1200:
                        results_all.append(random.choice(test_num))
                        break
                    else:
                        continue
                return results_all[0]+results_all[2]+results_all[1]+str(results_all[3])

            elif (task>4 and task<9):
                self.p_3=self.p_3+1
                while len(results_letters_big)<3:
                    results_letters_big.append(random.choice(zimu_dx))
                while len(results_letters_small)<4:
                    results_letters_small.append(random.choice(zimu_xx))
                results_all.append("".join(results_letters_big))
                results_all.append("".join(results_letters_small))
                while True:
                    test_num=[i for i in range(1100,2600)]
                    if random.choice(test_num)>1200 and random.choice(test_num)<2400:
                        results_all.append(random.choice(test_num))
                        break
                    else:
                        continue
                return results_all[1]+results_all[0]+str(results_all[2])

            elif (task>9 and task<12):
                self.p_4=self.p_4+1
                while len(results_letters_big)<3:
                    results_letters_big.append(random.choice(zimu_dx))
                while len(results_letters_small)<4:
                    results_letters_small.append(random.choice(zimu_xx))
                results_all.append("".join(results_letters_big))
                results_all.append("".join(results_letters_small))
                while True:
                    test_num=[i for i in range(2300,5000)]
                    if random.choice(test_num)>2400 and random.choice(test_num)<5000:
                        results_all.append(random.choice(test_num))
                        break
                    else:
                        continue
                return str(results_all[2])+results_all[1]+results_all[0]

            elif (task>12 and task<15):
                self.p_5=self.p_5+1
                while len(results_letters_big)<4:
                    results_letters_big.append(random.choice(zimu_dx))
                while len(results_letters_small)<5:
                    results_letters_small.append(random.choice(zimu_xx))
                results_all.append("".join(results_letters_big))
                results_all.append("".join(results_letters_small))
                while True:
                    test_num=[i for i in range(4900,10000)]
                    if random.choice(test_num)>5000 and random.choice(test_num)<10000:
                        results_all.append(random.choice(test_num))
                        break
                    else:
                        continue
                return str(results_all[2])+results_all[0]+results_all[1]

            else:
                self.p_6=self.p_6+1
                while len(results_letters_big)<5:
                    results_letters_big.append(random.choice(zimu_dx))
                while len(results_letters_small)<4:
                    results_letters_small.append(random.choice(zimu_xx))
                results_all.append("".join(results_letters_big))
                results_all.append("".join(results_letters_small))
                return results_all[0]+results_all[1]

        except IndexError,e:
            pass

    def count_data(self):
        print "生成100组账号密码的概率比例:"
        print "========账号类比率======="
        print "方案1: %s%% 方案2: %s%% 方案3: %s%% 方案4: %s%%" % (self.u_1,self.u_2,self.u_3,self.u_4)
        print "========密码类比率======="
        print "方案1: %s%% 方案2: %s%% 方案3: %s%% 方案4: %s%% 方案5: %s%% 方案6: %s%%" % (self.p_1,self.p_2,self.p_3,self.p_4,self.p_5,self.p_6)

if __name__==‘__main__‘:
    t=create_data()
    for i in range(0,100):
        print "生成账号: %s 密码: %s" % (t.username(),t.passwd())
    t.count_data()

Python 生成账号密码算法

时间: 2024-08-04 00:32:14

Python 生成账号密码算法的相关文章

信息安全-2:python之hill密码算法[原创]

转发注明出处:http://www.cnblogs.com/0zcl/p/6106513.html 前言: hill密码算法我打算简要介绍就好,加密矩阵我用教材上的3*3矩阵,只做了加密,解密没有做,不过我觉得会加密就会解密的~~       一.hill算法原理 hill密码是一种多字母替代密码,由数学学Leste Hill于1929年研制成功.该密码算法取m个连续的明文字母,并用m个密文字母代替,用向量或矩阵表示为(这里取m=3,C和P是长度为3的列向量,K是3*3矩阵): 即:C=KP  

信息安全-1:python之playfair密码算法详解[原创]

转发注明出处: http://www.cnblogs.com/0zcl/p/6105825.html 一.基本概念 古典密码是基于字符替换的密码.加密技术有:Caesar(恺撒)密码.Vigenere(维吉尼尔)密码.Playfair密码.Hill密码-- 明文:未经过加密的信息:密文:加密后的信息 加密解密的过程:如下图 二.Caesar密码 这里我先简单讲下恺撒密码,咸觉挺简单的,后面再主要讲Playfair算法原理与编程. 基本原理: 在开拓罗马帝国的时候,恺撒担心信使会阅读他送给士兵的命

python 生成动态密码

import stringimport randomdef gen_psd(length=10): """length is password length""" letters = string.ascii_lowercase + string.digits times = length/len(letters)+1 #print('times: ', times) pswd = ''.join([random.choice(letters)

通过游戏学python 3.6 第一季 第九章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号--锁定次数--菜单功能&#39;menufile

通过游戏学python 3.6 第一季 第九章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号--锁定次数--菜单功能'menufile 1 #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码---优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号--锁定次数--菜单功能'menufile' 2 #!usr/bin/env python 3 #-*-c

通过游戏学python 3.6 第一季 第七章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号

#猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码---优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号 1 #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码---优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号 2 #!usr/bin/env python 3 #-*-coding:utf-8-*- 4 #QQ124111294 5 6 7 import random 8 number = random.rand

UCenter密码算法规则和生成方法

如果想平滑的使用UCenter,那么这篇文章务必 康盛的系列产品,包括Discuz.UCHome.Supesite都集成了同一个用户系统--UCenter,用户登录的密码也保存在 UCenter中,对于其他系统集成或导出数据到UCenter系统,通常会遇到密码生成的问题,这里就讨论一下UCenter的用户密码算法规则和生成 方法. 密码通常使用MD5对用户密码HASH 后保存在数据库中的方法,如果黑客拿到了这个HASH数值,那么可以采用字典的方式暴力破解,如果这个字典数据库足够大,并且字典比较符

最近开始努力学python 写了一个python小代码:判断一个登陆程序,如果账号密码输错3次,锁定账号无法再登陆

1 count = 0 2 username = 'zhangsan' 3 userpassword = '111111' 4 5 f = open('lock.txt','r+') 6 file_list = f.readlines() 7 f.close() 8 #打开文件夹 读取数据 9 10 name = input("请输入用户名:") 11 12 if name in file_list: 13 print("您的账号被锁定!") 14 #判断文件夹中的

python 3 小知识 - 账号密码读取问题

看教程看到让写一个三次登录出错锁定用户作业,然而教程上没说怎么写.. 自己写总是出错在那个判断输入的账号和密码哪里,然后去网上找看到有人是这样写的, 1 #他们把账号和密码写到一个文件里面格式是 2 ''' 3 12 4 34 5 56 6 78 7 ''' 8 #他们的12和56是账号56和78是密码 9 #然后读取成一个列表分隔符是\n 10 a = ["12","34","56","78"]#把它们当成字符串格式因为我的

python小练习--模拟用户登录,(3次重试机会,登录成功展示登录账号密码)

知识点使用:1.格式化输出的两种方法---% .formate 2.while循环的使用,及跳出循环的两种方法---break(跳出循环体).continue(结束本次循环,继续下次循环) 3.if条件语句的使用 """ 功能:模拟用户登录,(3次重试机会,登录成功展示登录账号密码) 作者:诸葛 日期:29/06/2019 """ i = 3 username = 'zzl' password = '123456' #思路一:先验证账号,再验证密