加密工具类之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;}}}
阅读全文
0 0
- 加密工具类之MD5
- MD5 加密工具类
- Md5加密工具类
- MD5加密工具类
- MD5加密工具类
- MD5加密工具类
- MD5 加密工具类
- MD5 加密工具类
- md5 加密工具类
- MD5加密工具类
- 工具类:MD5加密
- MD5加密工具类
- MD5加密工具类
- MD5加密工具类
- MD5加密工具类
- MD5加密工具类
- MD5加密工具类
- MD5加密工具类
- 边缘检测算法
- 多年iOS开发经验总结(一)
- Android N限制共享库为PIC
- Codeforces#421 Mister B and Angle in Polygon
- jQuery事件绑定bind、live、delegate和on的区别
- 加密工具类之MD5
- win7 64位搭建汇编环境详细教程
- mockjs的学习之路
- SQLPlus Set常用设置
- 5-10 Saving James Bond
- 前端开发 经常用的谷歌插件&工具 总结
- JNDI学习总结(二)——Tomcat下使用C3P0配置JNDI数据源
- Windows10免费升级地址
- angularjs学习 ng-Messages表单验证