public abstract class MessageDigestSpi extends Object
MessageDigest
类,它提供了一个消息的摘要算法的功能,如MD5或SHA。
消息摘要是采用任意大小的数据并输出固定长度散列值的安全单向散列函数。
该类中的所有抽象方法必须由希望提供特定消息摘要算法的实现的加密服务提供者来实现。
实现可以实现Cloneable接口。
MessageDigest
Constructor and Description |
---|
MessageDigestSpi() |
Modifier and Type | Method and Description |
---|---|
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更新摘要。
|
protected int engineGetDigestLength()
这个具体的方法已经添加到这个以前定义的抽象类中。 (为了向后兼容,它不能是抽象的。)
默认行为是返回0。
该方法可能被提供者覆盖以返回摘要长度。
protected abstract void engineUpdate(byte input)
input
- 用于更新的字节。
protected abstract void engineUpdate(byte[] input, int offset, int len)
input
- 用于更新的字节数组。
offset
- 从字节数组开始的偏移量。
len
- 要使用的字节数,从
offset
开始。
protected void engineUpdate(ByteBuffer input)
input.remaining()
起始字节input.position()
。
返回时,缓冲区的位置将等于其限制;
其限制将不会改变。
input
- ByteBuffer
protected abstract byte[] engineDigest()
protected int engineDigest(byte[] buf, int offset, int len) throws DigestException
engineDigest
,引擎应该被复位(见engineReset
)。
重置是引擎执行者的责任。
这种方法应该是抽象的,但是我们留下具体的二进制兼容性。
知识渊博的提供者应该重写这种方法。
buf
- 存储摘要的输出缓冲区
offset
- 从输出缓冲区中启动的偏移量
len
- 为摘要分配的buf内的字节数。
这个默认实现和SUN提供者都不返回部分摘要。
这个参数的存在仅仅是为了我们的API的一致性。
如果该参数的值小于实际的摘要长度,该方法将抛出一个DigestException。
如果该值大于或等于实际摘要长度,则忽略此参数。
DigestException
- 如果发生错误。
protected abstract void engineReset()
public Object clone() throws CloneNotSupportedException
clone
在
Object
CloneNotSupportedException
- 如果在不支持
Cloneable
的实现上调用此方法。
Cloneable