Module java.base
Package java.security

Class MessageDigestSpi

java.lang.Object
java.security.MessageDigestSpi
直接已知的子类:
MessageDigest

public abstract class MessageDigestSpi extends Object
该类定义了 服务提供者接口 (SPI),用于 MessageDigest 类,提供了消息摘要算法的功能,例如 MD5 或 SHA。消息摘要是安全的单向哈希函数,它接受任意大小的数据并输出固定长度的哈希值。

该类中的所有抽象方法必须由希望提供特定消息摘要算法实现的加密服务提供者来实现。

实现可以自由实现 Cloneable 接口。

自 JDK 版本:
1.2
参见:
  • Constructor Summary

    Constructors
    Constructor
    Description
    子类调用的构造函数。
  • Method Summary

    Modifier and Type
    Method
    Description
    clone()
    如果实现支持克隆,则返回一个克隆对象。
    protected abstract byte[]
    通过执行填充等最终操作完成哈希计算。
    protected int
    engineDigest(byte[] buf, int offset, int len)
    通过执行填充等最终操作完成哈希计算。
    protected int
    返回字节中的摘要长度。
    protected abstract void
    重置摘要以供进一步使用。
    protected abstract void
    engineUpdate(byte input)
    使用指定的字节更新摘要。
    protected abstract void
    engineUpdate(byte[] input, int offset, int len)
    使用指定的字节数组更新摘要,从指定的偏移量开始。
    protected void
    使用指定的 ByteBuffer 更新摘要。

    Methods declared in class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • MessageDigestSpi

      public MessageDigestSpi()
      子类调用的构造函数。
  • Method Details

    • engineGetDigestLength

      protected int engineGetDigestLength()
      返回字节中的摘要长度。

      此具体方法已添加到此先前定义的抽象类中。(为了向后兼容,它不能是抽象的。)

      默认行为是返回 0。

      提供程序可以重写此方法以返回摘要长度。

      返回:
      字节中的摘要长度。
      自 JDK 版本:
      1.2
    • engineUpdate

      protected abstract void engineUpdate(byte input)
      使用指定的字节更新摘要。
      参数:
      input - 用于更新的字节。
    • engineUpdate

      protected abstract void engineUpdate(byte[] input, int offset, int len)
      使用指定的字节数组更新摘要,从指定的偏移量开始。
      参数:
      input - 用于更新的字节数组。
      offset - 在字节数组中开始的偏移量。
      len - 要使用的字节数,从 offset 开始。
    • engineUpdate

      protected void engineUpdate(ByteBuffer input)
      使用指定的 ByteBuffer 更新摘要。使用 input.remaining() 字节更新摘要,从 input.position() 开始。返回时,缓冲区的位置将等于其限制;其限制不会改变。
      参数:
      input - ByteBuffer
      自 JDK 版本:
      1.5
    • engineDigest

      protected abstract byte[] engineDigest()
      通过执行填充等最终操作完成哈希计算。一旦调用了 engineDigest,引擎应该被重置(参见 engineReset)。重置是引擎实现者的责任。
      返回:
      结果哈希值的字节数组。
    • engineDigest

      protected int engineDigest(byte[] buf, int offset, int len) throws DigestException
      通过执行填充等最终操作完成哈希计算。一旦调用了 engineDigest,引擎应该被重置(参见 engineReset)。重置是引擎实现者的责任。该方法应该是抽象的,但为了二进制兼容性,我们将其保留为具体方法。了解情况的提供者应该重写此方法。
      参数:
      buf - 用于存储摘要的输出缓冲区
      offset - 输出缓冲区中的起始偏移量
      len - 用于摘要的字节数。此默认实现和 SUN 提供程序均不返回部分摘要。此参数的存在仅是为了 API 的一致性。如果此参数的值小于实际摘要长度,则该方法将抛出一个 DigestException。如果其值大于或等于实际摘要长度,则忽略此参数。
      返回:
      存储在输出缓冲区中的摘要长度。
      抛出:
      DigestException - 如果发生错误。
      自 JDK 版本:
      1.2
    • engineReset

      protected abstract void engineReset()
      重置摘要以供进一步使用。
    • clone

      public Object clone() throws CloneNotSupportedException
      如果实现支持克隆,则返回一个克隆对象。
      覆盖:
      clone 在类 Object
      返回:
      如果实现支持克隆,则返回一个克隆对象。
      抛出:
      CloneNotSupportedException - 如果在不支持 Cloneable 的实现上调用此方法。
      参见: