本篇使用java自带的MessageDigest实现对文本的md5加密算法,具体代码如下:
- /**
- *@Description: 将字符串转化为MD5
- */
- package cn.yicha.novel.util;
- import java.security.MessageDigest;
- import java.security.NoSuchAlgorithmException;
- public class ParseMD5 {
- /**
- * @param str
- * @return
- * @Date: 2013-9-6
- * @Author: lulei
- * @Description: 32位小写MD5
- */
- public static String parseStrToMd5L32(String str){
- String reStr = null;
- try {
- MessageDigest md5 = MessageDigest.getInstance("MD5");
- byte[] bytes = md5.digest(str.getBytes());
- StringBuffer stringBuffer = new StringBuffer();
- for (byte b : bytes){
- int bt = b&0xff;
- if (bt < 16){
- stringBuffer.append(0);
- }
- stringBuffer.append(Integer.toHexString(bt));
- }
- reStr = stringBuffer.toString();
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- }
- return reStr;
- }
- /**
- * @param str
- * @return
- * @Date: 2013-9-6
- * @Author: lulei
- * @Description: 32位大写MD5
- */
- public static String parseStrToMd5U32(String str){
- String reStr = parseStrToMd5L32(str);
- if (reStr != null){
- reStr = reStr.toUpperCase();
- }
- return reStr;
- }
- /**
- * @param str
- * @return
- * @Date: 2013-9-6
- * @Author: lulei
- * @Description: 16位小写MD5
- */
- public static String parseStrToMd5U16(String str){
- String reStr = parseStrToMd5L32(str);
- if (reStr != null){
- reStr = reStr.toUpperCase().substring(8, 24);
- }
- return reStr;
- }
- /**
- * @param str
- * @return
- * @Date: 2013-9-6
- * @Author: lulei
- * @Description: 16位大写MD5
- */
- public static String parseStrToMd5L16(String str){
- String reStr = parseStrToMd5L32(str);
- if (reStr != null){
- reStr = reStr.substring(8, 24);
- }
- return reStr;
- }
- }
- 就是把string字符串转成字节数组,然后通过md5的messagedigest类加密成另外一个字节数组,然后遍历这个字节数组,把每一个元素与255的16进制数做与运算,并对运算完的结果进行小于16的数进行补零的操作。最终添加到新的String里面去。完成md5的加密。
md5是单向的。 目前网上流行的解密是字典破解。运算速度决定于服务器的电脑的配置。