Class MessageDigest
抽象类:public abstract class MessageDigest extends MessageDigestSpi
(java.security.MessageDigest, java.security.MessageDigestSpi)
这个MessageDigest类为应用程序提供消息摘要算法的功能,如SHA-1或SHA-256。消息摘要是安全的单向哈希函数,它接受任意大小的数据并输出固定长度的哈希值。
MessageDigest对象开始初始化。使用update方法对数据进行处理。在任何时候都可以调用reset来重置摘要。在更新了所有要更新的数据之后,应该调用其中一个摘要方法来完成hash计算。
对于给定数量的更新,可以调用摘要方法一次。调用摘要之后,MessageDigest对象将重置为其初始化状态。
实现可以自由地实现Cloneable接口。客户端应用程序可以通过尝试克隆和捕获CloneNotSupportedException来测试可克隆性。
1 MessageDigest md = MessageDigest.getInstance("SHA-256"); 2 3 try { 4 md.update(toChapter1); 5 MessageDigest tc1 = md.clone(); 6 byte[] toChapter1Digest = tc1.digest(); 7 md.update(toChapter2); 8 ...etc. 9 } catch (CloneNotSupportedException cnse) { 10 throw new DigestException("couldn't make digest of partial content"); 11 }
标准的MessageDigest
算法
构造函数:
方法:
例子:
private static byte[] getMessageDigest(byte[] randnum, String password) { //声明消息摘要对象 MessageDigest md = null; try { //创建消息摘要 md = MessageDigest.getInstance("MD5"); //将随机数据传入消息摘要对象 md.update(randnum); //将口令的数据传给消息摘要对象 md.update(password.getBytes("UTF-8")); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } //获得消息摘要的字节数组 return md.digest(); }
详情可参考 https://docs.oracle.com/javase/8/docs/api/java/security/MessageDigest.html?is-external=true