转自:https://blog.csdn.net/mmd1234520/article/details/70210002/
1 import java.security.MessageDigest; 2 import java.security.NoSuchAlgorithmException; 3 4 import org.apache.commons.codec.digest.DigestUtils;//开发的jar包 使用更方便 5 public class MD5 { 6 7 /* 8 * 1.一个运用基本类的实例 9 * MessageDigest 对象开始被初始化。该对象通过使用 update 方法处理数据。 10 * 任何时候都可以调用 reset 方法重置摘要。 11 * 一旦所有需要更新的数据都已经被更新了,应该调用 digest 方法之一完成哈希计算。 12 * 对于给定数量的更新数据,digest 方法只能被调用一次。 13 * 在调用 digest 之后,MessageDigest 对象被重新设置成其初始状态。 14 */ 15 public static void encrypByMd5(String context) { 16 try { 17 MessageDigest md = MessageDigest.getInstance("MD5"); 18 md.update(context.getBytes());//update处理 19 byte [] encryContext = md.digest();//调用该方法完成计算 20 21 int i; 22 StringBuffer buf = new StringBuffer(""); 23 for (int offset = 0; offset < encryContext.length; offset++) {//做相应的转化(十六进制) 24 i = encryContext[offset]; 25 if (i < 0) i += 256; 26 if (i < 16) buf.append("0"); 27 buf.append(Integer.toHexString(i)); 28 } 29 System.out.println("32result: " + buf.toString());// 32位的加密 30 System.out.println("16result: " + buf.toString().substring(8, 24));// 16位的加密 31 } catch (NoSuchAlgorithmException e) { 32 // TODO Auto-generated catch block 33 e.printStackTrace(); 34 } 35 } 36 37 /* 38 * 2.使用开发的jar直接应用 39 * 使用外部的jar包中的类:import org.apache.commons.codec.digest.DigestUtils; 40 * 对上面内容的一个封装使用方便 41 */ 42 public static void encrypByMd5Jar(String context) { 43 String md5Str = DigestUtils.md5Hex(context); 44 System.out.println("32result: " + md5Str); 45 } 46 47 public static void main(String[] args) { 48 49 encrypByMd5("yang"); 50 encrypByMd5Jar("yang"); 51 } 52 }