MessageDigest
用于计算指定数据的消息摘要(散列)。
实例化
MessageDigest
没有公开的构造方法,所以只能调用其静态方法getInstace
进行实现化。这个方法有多个重载如下:
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)
;此方法需要一个字符串作为参数,用于说明使用哪个消息摘要算法。
方法说明
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)
使用指定信息更新摘要;(相当于把各次update调用传入的信息顺次连接后计算摘要)public void reset();
重置摘要;(相当于把之前各次update调用传入的信息全部清空了)public byte[] digest();
public int digest(byte[] buf, int offset, int len) throws DigestException;
public byte[] digest(byte[] input);
获取摘要,并重置摘要;(如果有参数,则会先使用参数调用update
,然后再调用无参的digest
)public final String getAlgorithm();
获取当前MessageDigest
使用的算法;
目前JDK8默认支持的算法(不区分大小写)
- MD2
- MD5
- SHA(SHA-1)
- SHA-1
- SHA-224
- SHA-256
- SHA-384
- SHA-512