两种方式实现java Md5加密
2017-07-13 15:32
465 查看
一、加盐方式
/** * 生成32位md5码 * @param password * @return */ public static String md5Password(String password) { try { // 得到一个信息摘要器 MessageDigest digest = MessageDigest.getInstance("md5"); byte[] result = digest.digest(password.getBytes()); StringBuffer buffer = new StringBuffer(); // 把每一个byte 做一个与运算 0xff; for (byte b : result) { // 与运算 int number = b & 0xff;// 加盐 String str = Integer.toHexString(number); if (str.length() == 1) { buffer.append("0"); } buffer.append(str); } // 标准的md5加密后的结果 return buffer.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return ""; } }
二、普通方式
public static String MD5(String key) { char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; try { byte[] btInput = key.getBytes(); // 获得MD5摘要算法的 MessageDigest 对象 MessageDigest mdInst = MessageDigest.getInstance("MD5"); // 使用指定的字节更新摘要 mdInst.update(btInput); // 获得密文 byte[] md = mdInst.digest(); // 把密文转换成十六进制的字符串形式 int j = md.length; char str[] = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; str[k++] = hexDigits[byte0 >>> 4 & 0xf]; str[k++] = hexDigits[byte0 & 0xf]; } return new String(str); } catch (Exception e) { return null; } }
相关文章推荐
- java中匿名内部类的两种实现方式 (引用)
- JAVA中实现多线程的两种方式
- Java中匿名类的两种实现方式
- 对于JAVA系统中的定时操作有两种实现方式(针对oarcle)
- 对于JAVA系统中的定时操作有两种实现方式(针对oarcle)
- 第2章 Java编程基础——FAQ2.16 在实现x和y相加时, x+=y和x=x+y两种实现方式有区别吗?
- Java中有两种实现多线程的方式以及两种方式之间的区别
- 【Java多线程】实现java线程的两种方式
- Java两种方式实现多线程对比
- java多线程的两种实现方式
- Java中线程实现的两种方式例程
- Java【多线程知识总结(5)】比较继承Thread类创建线程和实现Runnable接口创建线程这两种方式
- 警察叔叔智力训练计算1 2 3 4 5 6 7 8 9=110;JAVA实现的两种方式
- 用JAVA实现汉字转拼音缩写(两种方式介绍)
- Java中匿名类的两种实现方式
- java 两种方式实现自定义排序
- Java中有两种实现多线程的方式以及两种方式之间的区别
- 【Java多线程学习】Java多线程的两种实现方式:继承Thread类 & 实现Runable接口
- Java中有两种实现多线程的方式以及两种方式之间的区别
- Java程序操作Oracle两种方式之简单实现