最近在和同事讨论个人密码的安全性时,就对6位的数字及大小写字母组合的密码的安全性存在一定疑问。然后索性就写了个程序,实际来求证一下,于是就有了这篇文章和我写的实用的MD5破解程序。

一般的系统,存储用户密码时,都是将密码明文进行MD5之后进行保存的,因MD5算法的不可逆性,就算知道了存储的MD5结果字符串,也不能正常计算出密码原文。当然,可以进行穷举,将密码明文的所有可能都进行MD5运算,然后将结果与密文对比,如果相符即找到了密码原文。

还有互联网上提供了更直接的办法,就是可以在某些网站上可以直接根据MD5的结果串反查出原文。这样的网站有很多,他们提供常用的密码或强度不高的密码的反查。对于不常用的或密码强度比较高的密码,是要收费的。他们是将尽可能多的密码原文和对应的MD5结果保存在数据库中,然后可进行一对一的查询。当然、他们实际在存储时还可以做了一些技术手段以节约存储空间,比如:正常的MD5结果是16个字节,实际存储时可能只取前两三个和后两三个字节进行存储,然后每一条MD5结果可能对应好几条原文,在实际查询时,根据用户提交的MD5结果取前后几个字节,查到这几条原文,然后对每条原文进行MD5运算,结果与用户提交的串相符时反馈给用户。这种做法可以节约百分之七八十的存储空间,但对用户的实际查询没有什么影响。

好吧,作为一个CODER,要做的事情就是把这个暴力破解的程序给整出来,并且对于这种暴破的效率要有直观的感受,也就是实际体验一下不同长度不同类型的密码的安全性。

前后花了两三天时间,用C语言把这个程序给整出来了,有Windows平台和Linux平台的两种版本。程序可以对于1-16位的,包含数字、小写字母、大写字母、特殊字符的任意组合的密码进行暴力破解。当然,长度越长、包含的字符类型越多,在暴力破解时所费的时间越长。为了更高效利用现有的多核CPU,程序还支持多线程。但在实际使用时,并不是线程开得越多越好,因为你的CPU有几核是固定的,而且操作系统本身还在处理其他的很多事情,线程开得太多,反而可能会因为操作系统对线程的频繁调度而减缓破解的效率。一般情况下,可查看CPU的逻辑处理器数量,然后开启比这个数量少2个的线程数。

好吧,介绍我这个程序的用法,这个程序,只提供命令行的操作方式,没有图形界面,Windows平台和Linux平台的操作命令也是相同,命令形式如下:

cmd5 parameter1 paramete2 parameter3

命令需要三个参数:

parameter1表示要破解的MD5串,注意用小写形式,如:e10adc3949ba59abbe56e057f20f883e

parameter2表示密码包含的字符类型,用相同类型的字符来指示。即用任一数字表示查找的密码范围要包含数字字符,用任一小写字母表示查找的密码范围包含小写字母,用任一大写字母表示查找的密码范围包含大写字母,用任一特殊符号表示查找的密码范围包含特殊符号,比如:0aA 表示要查找的密码包含数字、小写字母、大写字母三种字符;b* 表示包含小写字母和特殊符号;  2cH%  表示四种类型的符号都包含。

Parameter3表示要创建的线程数,用整数表示,最小为1,最大为32。

程序无需指定原文的长度,它会自动从1到16位进行暴破。

命令示例:

cmd5 e10adc3949ba59abbe56e057f20f883e 0bA 4

表示破解e10adc3949ba59abbe56e057f20f883e串,指定包含数字、大小写字母,创建4个线程并行暴力破解。

通报一下这个程序的效率,本人一台七年前的台式机,3.3GHz的CPU,单线程,每秒可以验证564万个MD5密码,这是Windows平台的程序的效率,Linux平台同样源代码的程序,效率会更高一些,可能是Linux平台的编译器对程序的优化效率更高吧。根据实验,使用MD5算法,由数字、大小写字母组成的六位的密码,用普通个人电脑单线程,2小时50分钟内可以暴破,如果多线程,时间更少。如果是八位用数字、大小写字母和特殊符号混合组成的密码,这样就算用32线程,其暴力破解时间将达到270天。

所以,在使用MD5算法存储密码时,六位的数字大小写字母混合密码是不安全的,八位的单一类型字母密码是不安全的,十位的纯数字密码也是不安全的。

附程序下载地址:https://download.csdn.net/download/shaowl111/20061099

MD5破解实验与个人的MD5暴破程序介绍相关推荐

  1. 关于MD5破解这件事

    blog.csdn.net/singlerace/article/details/1360400 前 几天在论坛上看到有人在讨论MD5的破解,很多人对MD5的理解让我大跌眼镜:有人认为MD5是一种加密 ...

  2. 一些国外的MD5破解网站

    国外的MD5查询网站只支持32位散列,和国内的16位散列不同,而16位散列据我所知还没有有效地方法可转换为32位. 一般的16位MD5是取32位的第9到16位,也就是去除了32位的前8位和后8位,基本 ...

  3. 【转】理论计算机初步:从hash函数到王小云的MD5破解

    转:http://zhiqiang.org/blog/science/computer-science/preliminary-computer-theory-xiao-yun-wang-from-t ...

  4. .NET破解之太乐地图下载器【非暴破】

    不知不觉,接触破解逆向已经三个月了,从当初的门外汉到现在的小白,这个过程只有经历过才知道其中的苦与乐: 有无知.困惑.痛苦.惊喜.彻悟.欣慰-- 有无助的软件脱壳,茫然的代码分析,有无趣的反复测试, ...

  5. C#毕业设计——基于MD5+RSA的数字签名设计与实现(毕业论文+程序源码)——数字签名系统

    基于MD5+RSA的数字签名设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于MD5+RSA的数字签名设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开题报告PPT模板及论 ...

  6. MD5流程以及安全性分析,MD5加盐,MD6,笔记

    版权归其所有论文作者所有. 并没写原始的地址,因为这是我整合的,作者太多,包括我.太匆忙,原作者可以联系我. 简介 MD5适用于数据完整性校验的.将任意长度的字节串(所以是基于底层的二进制串的),映射 ...

  7. MD5加密安全吗(解析MD5)

    MD5 是 Message Digest Algorithm 的缩写,译为信息摘要算法,它是 Java 语言中使用很广泛的一种加密算法.MD5 可以将任意字符串,通过不可逆的字符串变换算法,生成一个唯 ...

  8. python2 md5库_python版本坑:md5例子(python2与python3中md5区别)

    起步 对于一些字符,python2和python3的md5加密出来是不一样的. # python2.7 pwd = "xxx" + chr(163) + "fj" ...

  9. c语言md5函数 linux,【转】MD5校验C语言实现源代码

    /* 带密钥的MD5算法库md5.h共有下列函数: char* MDString (char *); // 输入任意一个字符串,经过md5算法处理后,返回结果:一个定长(32个字符)字符串 char* ...

  10. linux 文件md5,Linux下计算文件的MD5值

    脚本功能 脚本使用Perl编写,计算文件的MD5值 脚本用途 服务器在安装完操作系统后,计算PATH变量里面所有的二进制文件的MD5.计算单个文件MD5值.计算某个目录(包括子目录)下所有的文件的MD ...

最新文章

  1. R语言使用caret包中的createFolds函数对机器学习数据集进行交叉验证抽样、返回的样本列表长度为k个
  2. PS Material 漫谈 六: Material Availability Check
  3. PaddleHub人像分割模型:AI人像抠图及图像合成
  4. python用电度数设计_Python时间序列预测实战(电力负荷预测)
  5. TensorFlow(六)with语句
  6. TCP/IP协议读书笔记(1)
  7. android 获取已安装应用的安装包,Android获取设备已安装的应用
  8. 谷歌停止华为合作;联想声明未向华为断供;Android 遭反垄断调查 | 极客头条...
  9. 网络工程师 名词解释
  10. 什么是超级浏览器?目前超级浏览器有哪些分类?
  11. html 计数器 样式,CSS3 计数器_html/css_WEB-ITnose
  12. 安捷伦万用表--Agilent34401A数字万用表串口发送数据只上位机使用说明
  13. Lol(英雄联盟)自动输入密码
  14. App自动化测试 —— Appium的使用
  15. java面试题-捕获异常
  16. Oculus检测到你的NVIDIA驱动问题,解决办法
  17. 【Java】 # 使用java调用MySQL的函数、存储过程
  18. 数据结构与算法基础(青岛大学-王卓)(1)
  19. MacBook Pro 把机械硬盘换成固态硬盘
  20. C语言近似值求pi,C语言-计算π的近似值

热门文章

  1. 电磁屏蔽技术的三种主要方法
  2. 基于Bootstrap 3可预览的HTML5文件上传插件
  3. macOS Catalina系统下TexStudio自带PDF查看器的中文显示问题
  4. 微信抽奖小程序怎么做怎么弄?微信抽奖小程序制作方法详细介绍
  5. Linux下 文件或文件夹的复制(拷贝 cp)
  6. 机器学习面试知识点总结
  7. 通过手机获取微信公众号封面
  8. 4g网卡MF831移植到smart210
  9. 供应链三道防线(读书笔记)4(共4)
  10. ILSVRC竞赛详细介绍(ImageNet Large Scale Visual Recognition Challenge)