我们知道md5加密是不可逆转的,但是要破解md5的加密也很简单。
网上也有很多在线的破解。既然是不可逆转的,那么网上的那些破解是怎么来的呢?
原因很简单,就是使用穷举法来进行破解。
如:我们计算出键盘上所有字符的组合的md5,将加密前后的字符串分别存入数据库中;
然后拿你的md5加密后的字符串进行查询得出加密前的字符串。这就是在线破解的奥秘。
但是这种破解方法也有局限性。如:我对单一一个字符串进行多次的md5加密,那么我们破解就要反复的进行穷举。
如果你不知道字符串被md5加密了多少次,那么就要反复的多试几次了。当然一般的网站使用的md5加密的密码不会太复杂。
我们就可以使用我今天所讲的这种方法来破解了。
1. 首先我们要找出键盘上所有的字符,存入数组中,如下

/*** 键盘上除功能键外的所有字符*/static char[] buf = {'1', '2', '3', '4' ,'5','6','7','8','9','0','a','b','c','d', 'e', 'f', 'g' ,'h','i','j','k','l','m','n','o','p','q','r','s','t', 'u', 'v', 'w' ,'x','y','z','A','B','C','D', 'E', 'F', 'G' ,'H','I','J','K','L','M','N','O','P','Q','R','S','T', 'U', 'V', 'W' ,'X','Y','Z',' ','~','!','@','#','$','%','^','&','*','?','`','"',':','(',')',';',',','.','/','<','>','\'','|',']','[','{','}'};

2. 我们要实现md5的计算方法,如下

/*** 实现md5加密* @author Herman.Xiong* @date 2015-4-22 上午10:19:05* @param str* @return*/static String md5(String str){StringBuffer sb = new StringBuffer(32);try {MessageDigest md = MessageDigest.getInstance("MD5");byte[] array = md.digest(str.getBytes("UTF-8"));for (int i = 0; i < array.length; i++) {sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).toUpperCase().substring(1, 3));}} catch (Exception e) {return null;}return sb.toString();}

3. 我们要键盘上所有的字符进行自由组合,可以重复。组合代码如下

/*** 递归组合字符* @author Herman.Xiong* @date 2015-4-22 下午03:35:41*/static void select(String str,char [] data) {if(1 > data.length)return;for (int i = 0; i < data.length; i++) {String result=str+data[i];System.out.println(result);//System.out.println(md5(result));if(result.length()<data.length){select(result,data);}}}public static void main(String[] args) {for (int i = 0; i < buf.length; i++) {System.out.println(buf[i]);//System.out.println(md5(buf[i]+""));select(buf[i]+"",buf);}}

4. 数组{"1","2","3"}组合效果如下
1 11 111 112 113 12 121 122 123 13 131 132 133
2 21 211 212 213 22 221 222 223 23 231 232 233
3 31 311 312 313 32 321 322 323 33 331 332 333

5.将计算的md5存入数据库,随便进行md5加密,然后破解。

实例代码如下:

package com.herman.test;import java.security.MessageDigest;/*** 我们知道md5加密是不可逆转的,但是要破解md5的加密也很简单。* 网上也有很多在线的破解。既然是不可逆转的,那么网上的那些破解是怎么来的呢?* 原因很简单,就是使用穷举法来进行破解。* 如:我们计算出键盘上所有字符的组合的md5,将加密前后的字符串分别存入数据库中;* 然后拿你的md5加密后的字符串进行查询得出加密前的字符串。这就是在线破解的奥秘。* 但是这种破解方法也有局限性。如:我对单一一个字符串进行多次的md5加密,那么我们破解就要反复的进行穷举。* 如果你不知道字符串被md5加密了多少次,那么就要反复的多试几次了。当然一般的网站使用的md5加密的密码不会太复杂。* 我们就可以使用我今天所讲的这种方法来破解了。* 1.首先我们要找出键盘上所有的字符,存入数组中,如下:* 2.我们要实现md5的计算方法,如下:* 3.我们要键盘上所有的字符进行自由组合,可以重复。组合代码如下:* 4.数组{"1","2","3"}组合效果如下:1 11 111 112 113 12 121 122 123 13 131 132 1332 21 211 212 213 22 221 222 223 23 231 232 2333 31 311 312 313 32 321 322 323 33 331 332 3335.将计算的md5存入数据库,随便进行md5加密,然后破解。* @author Herman.Xiong* @date 2015-4-22 上午10:18:19* @version V3.0* @since jdk 1.6,tomcat 6.0*/
public class Test {/*** 键盘上除功能键外的所有字符*/static char[] buf = {'1', '2', '3', '4' ,'5','6','7','8','9','0','a','b','c','d', 'e', 'f', 'g' ,'h','i','j','k','l','m','n','o','p','q','r','s','t', 'u', 'v', 'w' ,'x','y','z','A','B','C','D', 'E', 'F', 'G' ,'H','I','J','K','L','M','N','O','P','Q','R','S','T', 'U', 'V', 'W' ,'X','Y','Z',' ','~','!','@','#','$','%','^','&','*','?','`','"',':','(',')',';',',','.','/','<','>','\'','|',']','[','{','}'};/*** 实现md5加密* @author Herman.Xiong* @date 2015-4-22 上午10:19:05* @param str* @return*/static String md5(String str){StringBuffer sb = new StringBuffer(32);try {MessageDigest md = MessageDigest.getInstance("MD5");byte[] array = md.digest(str.getBytes("UTF-8"));for (int i = 0; i < array.length; i++) {sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).toUpperCase().substring(1, 3));}} catch (Exception e) {return null;}return sb.toString();}/*** 递归组合字符* @author Herman.Xiong* @date 2015-4-22 下午03:35:41*/static void select(String str,char [] data) {if(1 > data.length)return;for (int i = 0; i < data.length; i++) {String result=str+data[i];System.out.println(result);//System.out.println(md5(result));if(result.length()<data.length){select(result,data);}}}public static void main(String[] args) {for (int i = 0; i < buf.length; i++) {System.out.println(buf[i]);//System.out.println(md5(buf[i]+""));select(buf[i]+"",buf);}}
}

为加密的运行效果如下:
欢迎大家关注我的博客!如有疑问,请加QQ群:135430763共同学习!

破解md5加密的方法相关推荐

  1. java加密常用的方法_JAVA MD5 加密常用 方法

    JAVA MD5 加密常用 方法 class="java"> public class MD5Util { private static char hexDigits[] = ...

  2. android apk md5加密工具,Android实现简单MD5加密的方法

    本文实例讲述了Android实现简单MD5加密的方法.分享给大家供大家参考,具体如下: 网上关于android下MD5加密的资料很多,但是测试了下总是跟网站的md5加密不一样, 后来才知道是编码方式不 ...

  3. android md5的使用方法,Android实现简单MD5加密的方法

    本文实例讲述了Android实现简单MD5加密的方法.分享给大家供大家参考,具体如下: 网上关于android下MD5加密的资料很多,但是测试了下总是跟网站的md5加密不一样, 后来才知道是编码方式不 ...

  4. java实现php md5加密解密,java_Java后端实现MD5加密的方法,前言 在我们开发是要考虑这 - phpStudy...

    Java后端实现MD5加密的方法 前言 在我们开发是要考虑这个功能,当用户忘记密码的情况下,我们需要动态的发给他一个6位的随机密码,通过即时通,短信,微信等.并同时修改数据库中的原密码为这6位的随机密 ...

  5. C# MD5加密工具方法

    首先1.引用命名空间 using System.Security.Cryptography; 命名空间下 MD5中的方法都是静态,通过类名打点调用调用方法创建对象 1 public static To ...

  6. java后台开发加密程序_Java后端实现MD5加密的方法

    前言 在我们开发是要考虑这个功能,当用户忘记密码的情况下,我们需要动态的发给他一个6位的随机密码,通过即时通,短信,微信等.并同时修改数据库中的原密码为这6位的随机密码.让用户再去修改密码. 同时在数 ...

  7. Delphi2010 MD5加密的方法

    在Delphi2010及上以版本中,可以用TIdHashMessageDigest5对字符和流进行MD5加密,MD5加密是不可逆的,即不能解密,银行系统用户密码就是MD5加密,如果您的密码丢失,只能重 ...

  8. 分享一个破解js加密的方法

    这里加密用的是jsjiami.v6也称为sojson.v6. var _0xodW='jsjiami.com.v6',_0xodW_=['‮_0xodW'],_0x2406=[_0xodW,'MwUk ...

  9. Loadrunner进行md5加密方法

    本文主要介绍使用Loadrunner进行字符串md5加密的方法. 使用Loadrunner进行md5比较简单,首先是加载md5.h头文件,后使用头文件中的加密函数即可. 1. md5.h头文件内容如下 ...

  10. .NET生成常用16、32位MD5加密的两种方法

    //MD5加密函数比较复杂,在.NET中我们不需要编写底层的算法. //平台已经提供两个生成MD5加密的方法: //经过改动一点就可以生成如现在DVBBS等论坛中使用的MD5密码 //⑴:使用C:\W ...

最新文章

  1. 网络工程师_记录的一些真题_2014上半年上午
  2. 苹果出了新手机,我却盯上了他的手机壳
  3. 2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多
  4. 如何在Cordova Android 7.0.0 以下版本集成最新插件 极光插件为例 1
  5. 能力的齿轮每一次卡不上点的时候都是下一个批评的开始
  6. hbase 安装_HBASE 数据库入门级教程
  7. Java的最新发展– 2018年4月下旬
  8. Linux终端命令(6)--ifconfig,(find -name ‘*.txt‘ | xargs rm -rf)
  9. 驱动框架7——使用gpiolib完成led驱动
  10. python常用输入输出の方法
  11. ORACLE查询原理
  12. php面向对象魔术方法,PHP面向对象中的魔术方法
  13. DJFP2FP2计算机电缆,ZR-DJFP2FP2-22 (ZR-DJFP2FP2-22计算机电缆)(百勤石油)
  14. python提供了名称为什么的构造方法_python面向对象编程(1)——基本概念,术语,self,构造器...
  15. 如何用Ps制作中国移动基础框架
  16. 中兴配置dhcp服务器,中兴ZXR10 5928三层交换机DHCP配制步骤
  17. linux 网桥代码分析之网桥端口设备接收数据包处理分析Ⅴ
  18. 本人的月末结账步骤备忘
  19. POJ1436Horizontally Visible Segments线段树+lazy
  20. Python数据分析实战之一--某网站二手房交易信息(数据处理)

热门文章

  1. H265 Vs VP9
  2. 为ESP8266编译时出错
  3. APP 基本框架设计
  4. 《华为研发》阅读 - 16 (矩阵式管理)
  5. 微信小程序关于下拉刷新
  6. matlab读取多张图片数据
  7. 安鸾CMS系列之74CMS
  8. 情侣间的计算机游戏,适合情侣玩的双人单机游戏
  9. [摘]研究方法 - 实证研究
  10. 怎么打开kux格式?如何把kux格式转换成mp4