java.lang.Object
java.security.MessageDigestSpi
- 直接已知的子类:
-
MessageDigest
该类定义了 服务提供者接口 (SPI),用于
MessageDigest
类,提供了消息摘要算法的功能,例如 MD5 或 SHA。消息摘要是安全的单向哈希函数,它接受任意大小的数据并输出固定长度的哈希值。
该类中的所有抽象方法必须由希望提供特定消息摘要算法实现的加密服务提供者来实现。
实现可以自由实现 Cloneable 接口。
- 自 JDK 版本:
- 1.2
- 参见:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionclone()
如果实现支持克隆,则返回一个克隆对象。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
engineUpdate
(ByteBuffer input) 使用指定的 ByteBuffer 更新摘要。
-
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
使用指定的 ByteBuffer 更新摘要。使用input.remaining()
字节更新摘要,从input.position()
开始。返回时,缓冲区的位置将等于其限制;其限制不会改变。- 参数:
-
input
- ByteBuffer - 自 JDK 版本:
- 1.5
-
engineDigest
protected abstract byte[] engineDigest()通过执行填充等最终操作完成哈希计算。一旦调用了engineDigest
,引擎应该被重置(参见engineReset
)。重置是引擎实现者的责任。- 返回:
- 结果哈希值的字节数组。
-
engineDigest
通过执行填充等最终操作完成哈希计算。一旦调用了engineDigest
,引擎应该被重置(参见engineReset
)。重置是引擎实现者的责任。该方法应该是抽象的,但为了二进制兼容性,我们将其保留为具体方法。了解情况的提供者应该重写此方法。- 参数:
-
buf
- 用于存储摘要的输出缓冲区 -
offset
- 输出缓冲区中的起始偏移量 -
len
- 用于摘要的字节数。此默认实现和 SUN 提供程序均不返回部分摘要。此参数的存在仅是为了 API 的一致性。如果此参数的值小于实际摘要长度,则该方法将抛出一个DigestException
。如果其值大于或等于实际摘要长度,则忽略此参数。 - 返回:
- 存储在输出缓冲区中的摘要长度。
- 抛出:
-
DigestException
- 如果发生错误。 - 自 JDK 版本:
- 1.2
-
engineReset
protected abstract void engineReset()重置摘要以供进一步使用。 -
clone
如果实现支持克隆,则返回一个克隆对象。- 覆盖:
-
clone
在类Object
- 返回:
- 如果实现支持克隆,则返回一个克隆对象。
- 抛出:
-
CloneNotSupportedException
- 如果在不支持Cloneable
的实现上调用此方法。 - 参见:
-