MD5加密:(不可逆) 概念:MD5的全称是Message-Digest Algorithm 5(信息-摘要算法); 作用:是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。
两种方法实现md5加密:
1.使用MessageDigest来获取实例,以及实现加密。
2.使用org.apache.commons.codec.digest.DigestUtils的工具包,来实现加密;
MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。
MessageDigest 对象开始被初始化。该对象通过使用
update
方法处理数据。任何时候都可以调用reset
方法重置摘要。一旦所有需要更新的数据都已经被更新了,应该调用digest
方法之一完成哈希计算。对于给定数量的更新数据,
digest
方法只能被调用一次。在调用digest
之后,MessageDigest 对象被重新设置成其初始状态。
package com.enterise.test; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * md5加密: * @author Always * */ public class MD5Hex { public static void main(String[] args) { MD5Hex hex = new MD5Hex(); String result = hex.md5("zhou"); System.out.println("result--->"+result); System.out.println("length--->"+result.length()); } public String md5(String str) { if(str.trim() == null) { return null; } try { MessageDigest messageDigest = MessageDigest.getInstance("MD5"); messageDigest.update(str.getBytes()); byte[] digest = messageDigest.digest(); return toHexString(digest); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return ""; } private static final char HEX_DIGITS[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; public static String toHexString(byte[] b) { // String to byte StringBuilder sb = new StringBuilder(b.length * 2); for (int i = 0; i < b.length; i++) { sb.append(HEX_DIGITS[(b[i] & 0xf0) >>> 4]); sb.append(HEX_DIGITS[b[i] & 0x0f]); } return sb.toString(); } }
2.使用DigestUtils对字符串进行md5加密:
DigestUtils.md5Hex("1234");