MD5加密

来源:互联网 发布:eclipse开发java 编辑:程序博客网 时间:2024/06/05 21:17
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 byteStringBuilder 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");