基于python的MD5脚本怎么写
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,本篇内容介绍了"基于python的MD5脚本怎么写"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!开发
千家信息网最后更新 2025年11月11日基于python的MD5脚本怎么写
本篇内容介绍了"基于python的MD5脚本怎么写"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
开发思路
1、通过 string模块 自动生成字典;
2、使用permutations()函数,对字典进行全排列;
3、使用 md5模块 对全排列的字典进行转换;
4、使用了多线程,分别对5~18位字符串进行md5碰撞,以防止时间太长(虽然现在也要很久)。
md5碰撞函数
def md5_poj(self, md5_value, k): if len(md5_value) != 32: print("error") return md5_value = md5_value.lower() # permutations() 全排列 for item in permutations(all_letters, k): item = "".join(item) if item == "hongrisec@2019": print(item) if md5(item.encode()).hexdigest() == md5_value: print('\n success: ' + md5_value + ' ==> ' + item) self.__mdfive = 1其中 if len(md5_value) != 32 判断所输入的md5是否为32位的
主函数
def main(self): NT_md5 = input("请填写MD5:") start_time = time() t_list = [] print("正在查询...") # 添加线程 t_first = threading.Thread(target=self.md5_first, args=(NT_md5,)) t_first.daemon = 1 t_first.start() for k in range(5, 18): t = Process(target=self.md5_poj, args=(NT_md5, k)) # t = threading.Thread(target=self.md5_poj, args=(NT_md5, k)) t.daemon = 1 # 守护程序 t_list.append(t) # 启动所有线程 for i in t_list: i.start() # 当 __mdfive == 1 时结束所有线程 while 1: if self.__mdfive: break print("\n查询结束!") print('使用了 %f 秒'%(time() - start_time))完整代码脚本
import threadingfrom multiprocessing import Processfrom hashlib import md5from itertools import permutationsfrom string import ascii_letters, digits, ascii_lowercase, ascii_uppercasefrom time import timeall_letters = ascii_lowercase + '.,;@' + digitsclass MDfive: def __init__(self): self.__mdfive = 0 def md5_poj(self, md5_value, k): if len(md5_value) != 32: print("error") return md5_value = md5_value.lower() # permutations() 全排列 for item in permutations(all_letters, k): item = "".join(item) if item == "hongrisec@2019": print(item) if md5(item.encode()).hexdigest() == md5_value: print('\n success: ' + md5_value + ' ==> ' + item) self.__mdfive = 1 # 判断 md5 是否与空匹配 def md5_first(self, md5_firstvalue): if len(md5_firstvalue) != 32: elif md5_firstvalue == "31d6cfe0d16ae931b73c59d7e0c089c0": print("\n密码为空!") self.__mdfive = 1 def main(self): NT_md5 = input("请输入MD5:") start_time = time() t_list = [] print("正在查询...") # 添加线程 t_first = threading.Thread(target=self.md5_first, args=(NT_md5,)) t_first.daemon = 1 t_first.start() for k in range(5, 18): t = Process(target=self.md5_poj, args=(NT_md5, k)) # t = threading.Thread(target=self.md5_poj, args=(NT_md5, k)) t.daemon = 1 # 守护程序 t_list.append(t) # 启动所有线程 for i in t_list: i.start() # 当 __mdfive == 1 时结束所有线程 while 1: if self.__mdfive: break print("\n查询结束!") print('使用了 %f 秒'%(time() - start_time))if __name__ == '__main__': MDfive().main()"基于python的MD5脚本怎么写"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
线程
查询
脚本
函数
字典
内容
更多
模块
正在
知识
程序
碰撞
输入
实用
学有所成
接下来
代码
困境
字符
字符串
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
巴彦淖尔手机软件开发
EI数据库包年
.net 读取数据库图片
山东济南联想服务器代理多少钱
计算机软件开发范围包括
网络技术路由器改名
4G8核服务器
ibm服务器log
微型计算机数据库属于什么方面
网络安全工程师都有哪些证
电气工程 服务器硬件架设
江西数据库深度学习培训
供电局需要数据库吗
中山企业网络安全产品
软件开发技术难题及需求征集
软件开发项目的集成管理
网络安全有啥作用
数据库查看实例名的命令
免费的oracle数据库
手机软件开发销售价格
安徽学生网络技术服务价值
重庆电视盒子直播软件开发
腾讯云服务器和国际服的区别
层次性数据库
网络安全会议2004
sdol数据库
xbox低价服务器再也没有了吗
领信互联网科技信息有限公司
软件开发类论文开题
湖南启梵互联网科技游戏