package com.test;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Date;
public class Test {
private static final String password = "111111";
/**
* @author lilin
* @date 2011-8-13 上午11:21:38
* @Title: main
* @param @param args
* @return void
*/
private static final char code[] = { '1', '2', '3', '4', '5', '6' };
public static void main(String[] args) {
Test md5Obj = new Test();
// MD5加密对象
String md5Password = md5Obj.getMD5ofStr(password);
// 把这个认为我要找到的经过加密的密码
System.out.println("密码破测试中!");
System.out.println("明文是:" + password);
System.out.println("密文是:" + md5Password);
System.out.println("程序时间计时器!");
System.out.println("开始时间:" + new Date());
Md5_6(md5Password);
// 依次调用6位破解到20位破解..
// Md5_7(testResult);
System.out.println("结束时间:" + new Date());
}
/**
* 六位密码破解
*/
public static void Md5_6(String md5Password) {
String testPassword;
Test md5Obj = new Test();
String result;
for (int a = 0; a < code.length; a++) {
testPassword = "";
testPassword += code[a];
for (int b = 0; b < code.length; b++) {
testPassword = testPassword.substring(0, 1);
testPassword += code[b];
for (int c = 0; c < code.length; c++) {
testPassword = testPassword.substring(0, 2);
testPassword += code[c];
for (int d = 0; d < code.length; d++) {
testPassword = testPassword.substring(0, 3);
testPassword += code[d];
for (int e = 0; e < code.length; e++) {
testPassword = testPassword.substring(0,
4);
testPassword += code[e];
for (int f = 0; f < code.length; f++) {
testPassword =
testPassword.substring(0, 5);
testPassword += code[f];
result = md5Obj.getMD5ofStr
(testPassword);
if (md5Password.equals(result)) {
System.out.println("密码已经破解!");
System.out.println("明文是:" + testPassword);
System.out.println("密文是:" + md5Password);
return;
}
}
}
}
}
}
}
}
/**
* MD5 加密
*/
private String getMD5ofStr(String str) {
MessageDigest messageDigest = null;
try {
messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(str.getBytes("UTF-8"));
} catch (NoSuchAlgorithmException e) {
System.out.println("NoSuchAlgorithmException caught!");
System.exit(-1);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
byte[] byteArray = messageDigest.digest();
StringBuffer md5StrBuff = new StringBuffer();
for (int i = 0; i < byteArray.length; i++) {
if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)
md5StrBuff.append("0").append(
Integer.toHexString(0xFF & byteArray[i]));
else
md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
}
return md5StrBuff.toString();
}
}
分享到:
相关推荐
在描述中提到的"MD5加密解密demo",实际上MD5并不具备可逆的加密特性。MD5是一个单向函数,即给定任意输入,可以很容易地计算出固定的输出(摘要),但无法根据输出反推出原始输入。因此,我们通常不会说"MD5解密",...
C# .net MD5加密解密工具及加密解密类。使用方便,可直接下载加密解密代码在项目中使用。
C#编写的md5加密解密,含调用例子.有需要的朋友请下载使用
本Demo主要展示了如何在Android平台上进行MD5加密和解密操作。 MD5并不是一种加密算法,而是一种散列函数,它将任意长度的数据转化为固定长度的输出。由于MD5的特性,相同的输入会产生相同的输出,因此常用于密码...
java实现md5 加密解密(在网络中MD5是著名的不可逆算法,但是如果知道MD5的加密的字符串 则可以通过自己的加密算法对明文进行加密,对加密后的密文与字符串匹配; 匹配成功,表示找到明文;但是此程序的时间耗费较高!仅...
提供MD5最新加密解密等功能 1.MD5加密 加密时请输入明文,软件会自动加密,点击密码后会自动辅助 2.MD5解密 Md5解密加密专家支持以下类型的解密: md5、md5(md5($pass))、md5(md5(md5($pass)))、MD5(MD5...
MD5加密解密工具,MD5加密解密工具,MD5加密解密工具,MD5加密解密工具
java实现MD5加密解密算法,java源代码~
MD5加密解密工具,就我所知,MD5的目标是生成摘要。严格来说不是一种加密算法。 不管多长的信息都能生成固定长度的MD5编码的话,必然会有信息丢失。那么光有MD5编码的话是绝对不可能还原信息的。 那网上那些MD5解密...
用于md5加密解密,详细使用方法链接:https://blog.csdn.net/qq_35713752/article/details/81904958
MD5加密算法 实现数据的加密,解密。保障数据的安全
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,主要应用于数据的校验和加密场景。在IT行业中,MD5常被用来确保数据的完整性和安全性,尤其是在存储密码时,通常会将原始密码转化为MD5哈希值进行存储...
Md5加密解密
MD5,全称为Message-Digest Algorithm 5,是一种广泛使用的哈希函数,设计用于生成一个固定长度(128位)的摘要值,通常表示为32位的十六进制字符串。在C#中,MD5常用于数据的校验和加密,尽管它已不再被认为适合...
本文将详细介绍MD5加密算法的工作原理、C#中的MD5实现以及如何进行加密解密操作。 MD5算法简介: MD5是由美国计算机科学家Ronald Rivest设计的一种强哈希函数,它将任意长度的输入(又叫做预映射)通过一系列的数学...
本教程将深入探讨如何在Delphi中使用MD5进行文件的加密和解密。 MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,能够将任意长度的数据转化为固定长度的摘要信息。在文件加密中,MD5通常用于生成文件...
纯JAVA的MD5加密,利用MD5单向函数产生密钥,方便测试
java中常用的工具类,用于MD5的加密,里面还有切割了MD5加密的长度,有DES加密与解密,并且配有main函数可测试,可以根据自己的实际情况使用main函数测试使用
本文将详细介绍如何在微信小程序中实现MD5、AES(EBC模式)的加解密操作。 **MD5(Message-Digest Algorithm 5)** MD5是一种广泛使用的哈希函数,它可以将任意长度的数据转化为固定长度的128位(16字节)摘要。MD5...
而"DES加密解密"虽然与MD5不直接相关,但DES(Data Encryption Standard)也是一种常用的加密算法,可能会作为对比或者补充出现在文档中,介绍传统的对称加密技术。 总的来说,这个压缩包内容对于理解和使用MD5在...