位置:org.springframework.util
�实现接口:无
继承类:无(抽象类)
作用:提供加解密工具API
一、效果
提供不可逆的MD5加密方法
@Testpublic void test1() throws Exception {String password = "abc123456";String asHex = DigestUtils.md5DigestAsHex(password.getBytes());byte[] bytes = DigestUtils.md5Digest(password.getBytes());System.out.println(asHex);for (byte bit:bytes) {System.out.print(bit);}}
二、API
/* 核心API:生成对象,调用MessageDigest对象的digest方法生成摘要在MessageDigest中:public static MessageDigest getInstance(String algorithm):通过传入的加密名称生成对象public void update(byte[] input):传入要加密的内容,更新摘要对象public byte[] digest():返回加密后的摘要*/private static byte[] digest(String algorithm, byte[] bytes) {return getDigest(algorithm).digest(bytes);}
三、总结
spring的DigestUtils使用报文摘要对象MessageDigest生成数据唯一且可靠的标识符。但改类只提供了MD5算法的加密操作,没有逆向解密,主要供框架内部使用。
四、补充
apache commons-codec下也存在一个加密DigestUtils工具类,支持MD5\Sha1\Base64加密和Bse64解密。
引入依赖:
<dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.8</version></dependency>
public class UtilTest {static final String TARGET = "中文123abc,./";/** 不可逆算法 MD5*/@Testpublic void Md5(){String str = DigestUtils.md5Hex(TARGET);System.out.println("md5Hex: "+str);}/** 不可逆算法 SHA1*/@Testpublic void Sha1(){String str = DigestUtils.shaHex(TARGET);print("shaHex: "+str);str = DigestUtils.sha256Hex(TARGET);print("sha256Hex: "+str);str = DigestUtils.sha384Hex(TARGET);print("sha384Hex: "+str);str = DigestUtils.sha512Hex(TARGET);print("sha512Hex: "+str);}/** 可逆算法 BASE64*/@Testpublic void Base64(){//加密byte[] b = Base64.encodeBase64(TARGET.getBytes(), true);String str = new String(b);print("BASE64: "+str);//解密byte[] b1 = Base64.decodeBase64(str);print("解密之后内容为: "+new String(b1));}public void print(Object obj){System.out.println(obj);}}
参考资料: 加密算法:DigestUtils与java MessageDigest MessageDigest 类的用法
