Edited by DingDangXiaoMa
java MD5加密简单实现:
源码如下,并有注释:
package com.zh.test.util;
import
java.security.MessageDigest;
import
java.security.NoSuchAlgorithmException;
/**
* 加密类.对输入的字符串进行加密.
*
* @author Administrator
*
*/
public class MyEncrypt {
/**
* 对字符串进行加密处理.用到的算法是JDK 1.5中的 MD5算法 . MD5是一个不可逆的算法.
*
* @param toEncrypt
* @return
* @throws
Exception
*/
public static String encrypt(String
toEncrypt) throws Exception {
String inStr = toEncrypt;
MessageDigest md = null;
String out =
null;
System.out.println("转变之前的长度: " +
inStr.getBytes().length);
try {
md
= MessageDigest.getInstance("MD5");
byte[] digest =
md.digest(inStr.getBytes());
out =
byte2hex(digest);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
throw
e;
}
return out;
}
/**
* 把二进制数组转换成十六进制.
*
* @param
b
* @return
*/
private static String
byte2hex(byte[] b) {
System.out.println("数组长度; " +
b.length);
String hs = "";
String stmp =
"";
for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length() == 1) {
hs =
hs + "0" + stmp;
} else {
hs = hs + stmp;
}
}
return hs.toUpperCase();
}
/**
* 对加密算法进行测试.
*
* @param args
*
参数
* @throws Exception
* 异常处理.
*/
public static void main(String[] args) throws Exception {
String toEncrypt = "123456";
String toEncrypt2
= "aaa1112您好好`11887444....---00022";
String outString =
MyEncrypt.encrypt(toEncrypt2);
System.out.println(outString);
System.out.println("2C1835B7872CAB44D5D87312B85D829A".length());
}
}
以上部分是对MD5算法的简单实现.网上也有很多这样的资料,谁有兴趣,可以找更多的资料,
从网上看,说MD5是一个不可逆的运算,也不知道是不是这样?
可以参考网站:
http://www.moon-soft.com/doc/2624.htm