基于python的MD5脚本怎么写
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"基于python的MD5脚本怎么写"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!开发
千家信息网最后更新 2026年11月03日基于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安全错误
数据库的锁怎样保障安全
互联网络科技
新华互联网科技
互联网科技巨头监管
中国互联网科技股
互联网科技作文
鑫亿盛互联网科技
齐家互联网科技有限公司
互联网科技寓意
欧洲十大科技互联网公司
互联网大会黑科技排名
广州恒生互联网科技有限
和信科技工业互联网
搜狐科技互联网
科技大学互联网
恒生互联网科技业指数调整周期
南通创西澳互联网科技有限公司
扫呗互联网科技有限公司
互联网科技包装股
伍佰万互联网科技是干嘛的
互联网科技企业文化
互联网科技工作委员会毛军
奇酷互联网络科技公司
互联网科技大会
天扬科技互联网广告
互联网科技创新企业排名
武汉健翔互联网络科技有限公司
互联网时代的科技公司
昆明中奇联合互联网科技
艺电能源互联网科技有限公司招聘
北京品多多互联网科技有限公司