当前位置:首页 > 数据库 > Oracle

利用python在Oracle数据库中生成密码字典库

思路:

1.生成全字符的单密码有94个,两个密码有94*94,三个密码有94*94*94个

2.连接到oracle数据库,将生成的密码字典插入oracle表

3 验证字典是否成功插入

第一步

            def
             threefor():
    data=[]
    for key1 in word:
        for key2 in word:
            for key3 in word:
                data.append({wordkey: key1 + key2 + key3})
    return data

第二步连接到数据库:这个是db_config_dba

            import
             cx_Oracle
username=""
password=""
host=""
port=
instance=""
tns = cx_Oracle.makedsn(host,port,instance)
con=cx_Oracle.connect(username,password,tns, mode=cx_Oracle.SYSDBA, encoding="UTF-8" ,nencoding="UTF-8")

第三步插入表,以下是全部python 语句

            import
             datetime

            import
             gc

            import
             db_config_dba    #步骤二的python文件

            import
             time


            def
             threefor():
    data=[]
    for key1 in word:
        for key2 in word:
            for key3 in word:
                data.append({wordkey: key1 + key2 + key3})
    return data

if__name__ == "__main__":

    lowercase = abcdefghijklmnopqrstuvwxyz
    uppercase = ABCDEFGHIJKLMNOPQRSTUVWXYZ
    digits = 0123456789
    special = """!"#$%&‘( )*+,-./:;<=>?@[]^_`{|}~"""
    word = lowercase + uppercase + digits + special
    gc.collect()
    print(n)
    print(fword content is:     {word})
    print(fTotal number is:     {len(word)})
    print(n)
    starttime = datetime.datetime.now()
    print(Start generate password: )
    print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())))

    #create oracle db connection
    DB = db_config_dba.con
    cursor = DB.cursor()

    #delete librarykey in target oracle db database
    sql=drop table librarykey purge
    cursor.execute(sql)

    #create librarykey table in target db database
    sql=create table librarykey ( wordkey varchar(20),CONSTRAINT work_key primary key (wordkey))
    cursor.execute(sql)

    #generate insert sql for table librarykey
    sql = insert into librarykey (wordkey) values (:wordkey)
    cursor.executemany(sql, threefor())
    DB.commit()

    #查询数据库的记录数
    sql = select count(*) from  librarykey
    cursor.execute(sql)
    for row in cursor:
        print(row[0])

    endtime = datetime.datetime.now()
    print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())))
    print(fThe time cost: {endtime - starttime})

    print(n)
    #verfication the key number‘s as the sql result is tuple, so we should use row[0]if row[0] == len(word)*len(word)*len(word):
        print(ftotal password number should be : {len(word)*len(word)*len(word)})
    else:
        print("not all the password is generate,pls try again")

    cursor.close()
    DB.close()
    gc.collect()

结果:

word content is:     abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"#$%&‘( )*+,-./:;<=>?@[]^_`{|}~
Total number is:     94


Start generate password: 
2020-05-29 23:10:28
830584
2020-05-29 23:10:36
The time cost: 0:00:07.987566


total password number should be : 830584

Process finished with exit code 0

原文:https://www.cnblogs.com/tingxin/p/12990097.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐