JDK里面有一个java.security.MessageDigest类,这个类就是用来加密的。
加密代码如下:
String token = System.currentTimeMillis()+new Random().nextInt()+""try {
MessageDigest md = MessageDigest.getInstance("MD5")
byte[] md5 = md.digest(token.getBytes())
} catch (Exception e) {
throw new RuntimeException(e)
}
这个byte类型的数组就是使用MD5加密后的结果
package endecrypt02.
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.}
有必要的,md5就是为了防止人偷窥,而当密码很短的时候,利用暴力搜索也比较容易搜索到,只有密码强度足够的情况下才有意义,你想转换也就没那么容易了。md5类hash算法的设计初衷就是单向,即不可逆。