Java MD5如何解密?

Python010

Java MD5如何解密?,第1张

MD5是单向加密的,不管何种数据进行MD5加密都会得到固定长度的字符串

MD5一般用户文件完整性的校验,也有用来做密码加密的。

想要破解MD5,因其本身的算法不可逆,故只能使用穷举法,也就是不断拼字符串加密和已知的MD5字符串进行比对,这是一个相当大的工程,需要庞大的数据基础。

%ユZメΜ@

ヌmq<ュ

这个很正常。加密是将字节按照一定的规则进行了转换,转换后出什么样的怪字符都是正常的。

一般的做法是将加密后的byte数组转换为十六进制的字符串。

---------------------------------------------------------------------------------------------------------

import java.security.MessageDigest

public class Main {

public static void main(String[] args) throws Exception {

MessageDigest md = MessageDigest.getInstance("MD5")

byte[] b = md.digest("12345678".getBytes())

System.out.println(new String(b))

String result = ""

for (int i = 0i <b.lengthi++) {

String tmp = Integer.toHexString(b[i] &0xFF)

if (tmp.length() == 1) {

result += "0" + tmp

} else {

result += tmp

}

}

System.out.println(result)

}

}

运行结果

-------------------------------

%ユZメΜ@

ヌmq<ュ

25d55ad283aa400af464c76d713c07ad

package endecrypt

02.

03.import java.io.UnsupportedEncodingException

04.import java.security.MessageDigest

05.import java.security.NoSuchAlgorithmException

06.

07./**

08. * 采用MD5加密解密

09. * @author tfq

10. * @datetime 2011-10-13

11. */

12.public class MD5Util {

13.

14./***

15. * MD5加码 生成32位md5码

16. */

17.public static String string2MD5(String inStr){

18.MessageDigest md5 = null

19.try{

20.md5 = MessageDigest.getInstance("MD5")

21.}catch (Exception e){

22.System.out.println(e.toString())

23.e.printStackTrace()

24.return ""

25.}

26.char[] charArray = inStr.toCharArray()

27.byte[] byteArray = new byte[charArray.length]

28.

29.for (int i = 0i <charArray.lengthi++)

30.byteArray[i] = (byte) charArray[i]

31.byte[] md5Bytes = md5.digest(byteArray)

32.StringBuffer hexValue = new StringBuffer()

33.for (int i = 0i <md5Bytes.lengthi++){

34.int val = ((int) md5Bytes[i]) &0xff

35.if (val <16)

36.hexValue.append("0")

37.hexValue.append(Integer.toHexString(val))

38.}

39.return hexValue.toString()

40.

41.}

42.

43./**

44. * 加密解密算法 执行一次加密,两次解密

45. */

46.public static String convertMD5(String inStr){

47.

48.char[] a = inStr.toCharArray()

49.for (int i = 0i <a.lengthi++){

50.a[i] = (char) (a[i] ^ 't')

51.}

52.String s = new String(a)

53.return s

54.

55.}