MessageDigest 用于計(jì)算指定數(shù)據(jù)的消息摘要(散列)。
實(shí)例化
MessageDigest沒有公開的構(gòu)造方法,所以只能調(diào)用其靜態(tài)方法getInstace進(jìn)行實(shí)現(xiàn)化。這個(gè)方法有多個(gè)重載如下:
public static MessageDigest getInstance(String algorithm)
throws NoSuchAlgorithmException;
public static MessageDigest getInstance(String algorithm,Provider provider)
throws NoSuchAlgorithmException
public static MessageDigest getInstance(String algorithm, String provider)
throws NoSuchAlgorithmException, NoSuchProviderException;
我們通常使用的是public static MessageDigest getInstance(String algorithm);此方法需要一個(gè)字符串作為參數(shù),用于說明使用哪個(gè)消息摘要算法。
方法說明
public void update(byte[] input);
public void update(byte input);
public void update(byte[] input, int offset, int len);
public final void update(ByteBuffer input)
使用指定信息更新摘要;(相當(dāng)于把各次update調(diào)用傳入的信息順次連接后計(jì)算摘要)public void reset();
重置摘要;(相當(dāng)于把之前各次update調(diào)用傳入的信息全部清空了)public byte[] digest();
public int digest(byte[] buf, int offset, int len) throws DigestException;
public byte[] digest(byte[] input);
獲取摘要,并重置摘要;(如果有參數(shù),則會(huì)先使用參數(shù)調(diào)用update,然后再調(diào)用無參的digest)public final String getAlgorithm();
獲取當(dāng)前MessageDigest使用的算法;
目前JDK8默認(rèn)支持的算法(不區(qū)分大小寫)
- MD2
- MD5
- SHA(SHA-1)
- SHA-1
- SHA-224
- SHA-256
- SHA-384
- SHA-512