加密工具类之MD5

来源:互联网 发布:深圳楼市成交数据 编辑:程序博客网 时间:2024/06/03 03:18
MD5算法原理:
MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,
算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值
MD5加密算法功能:
1.输入任意长度的信息,经过处理,输出为128位的信息(数字指纹);
    2.不同的输入得到的不同的结果(唯一性);
    3.根据128位的输出结果基本不可能反推出输入的信息(不可逆)

MD5加密方法一:

import java.security.*;public class MD5{
//定义 String 数组,存储16进制的基本字符private final static String[] hexDigits ={"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c","d", "e", "f"};
//将指定byte数组转换成16进制字符串public static String byteArrayToHexString(byte[] b){StringBuffer resultSb = new StringBuffer();for (int i = 0; i < b.length; i++){resultSb.append(byteToHexString(b[i]));}return resultSb.toString();}
//将byte字符转换成16进制字符串private static String byteToHexString(byte b) {int n = b;if (n < 0)n = 256 + n;int d1 = n / 16;int d2 = n % 16;return hexDigits[d1] + hexDigits[d2];}
//获取MD5密文public static String compile(String origin){String resultString = null;try{  resultString = new String(origin);  MessageDigest md = MessageDigest.getInstance("MD5");
//md.digest()该函数返回值为存放哈希值结果的byte数组 
  resultString = byteArrayToHexString(md.digest(resultString.getBytes()));}catch (Exception ex){  ex.printStackTrace();}return resultString;}}
加密方法二:
/** * Description:将字符串进行MD5加密 *  * @param inStr *            需加密的字符串 * @return */
public static String string2MD5(String inStr) {// 创建一个 MessageDigest 对象(为应用程序提供信息摘要算法)MessageDigest md5 = null;try {// 返回一个 MD5 算法实例md5 = MessageDigest.getInstance("MD5");} catch (Exception e) {return "";}// 将需要加密的字符串数组化(char是unicode字符)char[] charArray = inStr.toCharArray();// 将char数组转化成byte数组byte[] byteArray = new byte[charArray.length];// char字符转换成byte字符for (int i = NUM_ZERO; i < charArray.length; i++) {byteArray[i] = (byte) charArray[i];}// 对指定数组进行更新,完成摘要计算byte[] md5Bytes = md5.digest(byteArray);StringBuffer hexValue = new StringBuffer();String temp = "";for (int i = NUM_ZERO; i < md5Bytes.length; i++) {// 对数组元素进行二进制运算int val = ((int) md5Bytes[i]) & 0XFF;//返回16进制的字符串temp = Integer.toHexString(val);temp = (1 == temp.length()) ? (STRING_ZERO + temp) : temp;hexValue.append(temp);}return hexValue.toString().toUpperCase();}


import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import org.springframework.util.StringUtils;加密方法三:
public class MD5Util{/** * md5加密 *  * @param str * @return */public static String md5(String str){try{if (StringUtils.isEmpty(str)){str = "";}MessageDigest md = MessageDigest.getInstance("MD5");md.update(str.getBytes());byte[] byteDigest = md.digest();int i;StringBuffer buf = new StringBuffer("");for (int offset = 0; offset < byteDigest.length; offset++){i = byteDigest[offset];if (i < 0)i += 256;if (i < 16)buf.append("0");buf.append(Integer.toHexString(i));}// 32位加密return buf.toString();// 16位的加密// return buf.toString().substring(8, 24);}catch (NoSuchAlgorithmException e){e.printStackTrace();return null;}}}

 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 车辆转让后保险怎么办 立案后警察不管怎么办 打架后对方讹人怎么办 工商被恶意举报怎么办 店铺被工商举报怎么办 被买单侠恐吓怎么办? 团伙作案刑事拘留怎么办取保 欢乐麻将老输怎么办 回不了家怎么办身份证 没注意闯红灯了怎么办 摩托车被套牌了怎么办? 发现员工偷钱怎么办 盗窃刑事拘留7天怎么办 盗窃抓不到人怎么办 发现宿舍被盗后怎么办(  ) 发现宿舍被盗后怎么办() 回收到赃物电瓶怎么办 不知情买了赃物怎么办 盗窃单位要报警怎么办 上网吸烟被逮住怎么办 有人在微信骂我怎么办 网吧抽烟被拍照怎么办 诈骗被拘留该怎么办 行政拘留人跑了怎么办 车牌号被偷了怎么办 当员工提出辞职怎么办 老员工提出辞职怎么办 家人进看守所了怎么办 被贷款中介诈骗怎么办 喝完酒吐难受怎么办 犯罪嫌疑人死在看守所怎么办 犯罪嫌疑人死不承认怎么办 高血压进了看守所怎么办 看守所里被欺负怎么办 老师上课迟到了怎么办 艾滋病看守所不收怎么办 没能力偿还债务怎么办 监狱病人的癌症怎么办 监狱的传染病人怎么办 犯人在监狱重病怎么办 亲戚被关拘留所怎么办