Java MD5如何解密?

Java MD5如何解密?,第1张

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

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

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

package endecrypt

import java.io.UnsupportedEncodingException

import java.security.MessageDigest

import java.security.NoSuchAlgorithmException

/**

* 采用MD5加密解密

* @author tfq

* @datetime 2011-10-13

*/

public class MD5Util {

/***

* MD5加码 生成32位md5码

*/

public static String string2MD5(String inStr){

MessageDigest md5 = null

try{

md5 = MessageDigest.getInstance("MD5")

}catch (Exception e){

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

e.printStackTrace()

return ""

}

char[] charArray = inStr.toCharArray()

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

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

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

byte[] md5Bytes = md5.digest(byteArray)

StringBuffer hexValue = new StringBuffer()

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

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

if (val <16)

hexValue.append("0")

hexValue.append(Integer.toHexString(val))

}

return hexValue.toString()

}

/**

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

*/

public static String convertMD5(String inStr){

char[] a = inStr.toCharArray()

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

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

}

String s = new String(a)

return s

}

// 测试主函数

public static void main(String args[]) {

String s = new String("tangfuqiang")

System.out.println("原始:" + s)

System.out.println("MD5后:" + string2MD5(s))

System.out.println("加密的:" + convertMD5(s))

System.out.println("解密的:" + convertMD5(convertMD5(s)))

}

}

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.}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9976435.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存