- java.lang.Object
-
- java.security.MessageDigestSpi
-
- 已知直接子类:
-
MessageDigest
public abstract class MessageDigestSpi extends Object
该类为MessageDigest
类定义了 ( SPI ),它提供消息摘要算法(如MD5或SHA)的功能。 消息摘要是采用任意大小的数据并输出固定长度散列值的安全单向散列函数。该类中的所有抽象方法必须由希望提供特定消息摘要算法的实现的加密服务提供者来实现。
实现可以实现Cloneable接口。
- 从以下版本开始:
- 1.2
- 另请参见:
-
MessageDigest
-
-
构造方法摘要
构造方法 Constructor 描述 MessageDigestSpi()
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 Object
clone()
如果实现是可克隆的,则返回克隆。protected abstract byte[]
engineDigest()
通过执行最后的操作(如填充)来完成哈希计算。protected int
engineDigest(byte[] buf, int offset, int len)
通过执行最后的操作(如填充)来完成哈希计算。protected int
engineGetDigestLength()
以字节为单位返回摘要长度。protected abstract void
engineReset()
重置摘要以供进一步使用。protected abstract void
engineUpdate(byte input)
使用指定的字节更新摘要。protected abstract void
engineUpdate(byte[] input, int offset, int len)
使用指定的字节数组从指定的偏移量开始更新摘要。protected void
engineUpdate(ByteBuffer input)
使用指定的ByteBuffer更新摘要。
-
-
-
方法详细信息
-
engineGetDigestLength
protected int engineGetDigestLength()
以字节为单位返回摘要长度。这个具体的方法已经添加到这个以前定义的抽象类中。 (为了向后兼容,它不能是抽象的。)
默认行为是返回0。
该方法可能被提供者覆盖以返回摘要长度。
- 结果
- 摘要长度以字节为单位。
- 从以下版本开始:
- 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 - 从以下版本开始:
- 1.5
-
engineDigest
protected abstract byte[] engineDigest()
- 结果
- 用于生成的哈希值的字节数组。
-
engineDigest
protected int engineDigest(byte[] buf, int offset, int len) throws DigestException
通过执行最后的操作(如填充)来完成哈希计算。 一旦engineDigest
,引擎应该被复位(见engineReset
)。 重置是引擎执行者的责任。 这种方法应该是抽象的,但是我们留下具体的二进制兼容性。 有知识的提供者应该覆盖这种方法。- 参数
-
buf
- 存储摘要的输出缓冲区 -
offset
- 从输出缓冲区中启动的偏移量 -
len
- 为摘要分配的buf内的字节数。 这个默认实现和SUN提供者都不返回部分摘要。 这个参数的存在仅仅是为了我们的API的一致性。 如果该参数的值小于实际的摘要长度,该方法将抛出一个DigestException。 如果该值大于或等于实际摘要长度,则忽略此参数。 - 结果
- 摘要存储在输出缓冲区中的长度。
- 异常
-
DigestException
- 如果发生错误。 - 从以下版本开始:
- 1.2
-
engineReset
protected abstract void engineReset()
重置摘要以供进一步使用。
-
clone
public Object clone() throws CloneNotSupportedException
如果实现是可克隆的,则返回克隆。- 重写:
-
clone
在Object
- 结果
- 一个克隆,如果实现是可克隆的。
- 异常
-
CloneNotSupportedException
- 如果这是在不支持Cloneable
的实现上Cloneable
。 - 另请参见:
-
Cloneable
-
-