JCA 实践记录—— MessageDigest

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);此方法需要一个字符串作为参数,用于说明使用哪个消息摘要算法。

方法说明

  1. 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调用传入的信息顺次连接后计算摘要)

  2. public void reset();
    重置摘要;(相当于把之前各次update调用传入的信息全部清空了)

  3. public byte[] digest();
    public int digest(byte[] buf, int offset, int len) throws DigestException;
    public byte[] digest(byte[] input);
    获取摘要,并重置摘要;(如果有参数,则会先使用参数调用update,然后再调用无参的digest

  4. public final String getAlgorithm();
    获取当前MessageDigest使用的算法;

目前JDK8默认支持的算法(不区分大小写)

  1. MD2
  2. MD5
  3. SHA(SHA-1)
  4. SHA-1
  5. SHA-224
  6. SHA-256
  7. SHA-384
  8. SHA-512

你可能感兴趣的:(JCA 实践记录—— MessageDigest)