|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.security.MessageDigestSpi java.security.MessageDigest
public abstract class MessageDigest
此 MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,输出固定长度的哈希值。
MessageDigest 对象开始被初始化。该对象通过使用 update
方法处理数据。任何时候都可以调用 reset
方法重置摘要。一旦所有需要更新的数据都已经被更新了,应该调用 digest
方法之一完成哈希计算。
对于给定数量的更新数据,digest
方法只能被调用一次。digest
被调用后,MessageDigest 对象被重新设置成其初始状态。
实现可随意选择是否实现 Cloneable 接口。客户端应用程可以通过尝试复制和捕获 CloneNotSupportedException 测试可复制性:
MessageDigest md = MessageDigest.getInstance("SHA"); try { md.update(toChapter1); MessageDigest tc1 = md.clone(); byte[] toChapter1Digest = tc1.digest(); md.update(toChapter2); ...etc. } catch (CloneNotSupportedException cnse) { throw new DigestException("couldn't make digest of partial content"); }
注意,如果给定的实现是不可复制的,而事先已知摘要的数目,则仍然能够通过实例化几个实例计算中间摘要。
注意,由于历史原因,此类是抽象的,是从 MessageDigestSpi
扩展的。应用程序开发人员只应该注意在此 MessageDigest
类中定义的方法;超类中的所有方法是供希望提供自己的信息摘要算法实现的加密服务提供者使用的。
构造方法摘要 | |
---|---|
protected |
MessageDigest(String algorithm)
创建具有指定算法名称的信息摘要。 |
方法摘要 | |
---|---|
Object |
clone()
如果实现是可复制的,则返回一个副本。 |
byte[] |
digest()
通过执行诸如填充之类的最终操作完成哈希计算。 |
byte[] |
digest(byte[] input)
使用指定的字节数组对摘要进行最后更新,然后完成摘要计算。 |
int |
digest(byte[] buf,
int offset,
int len)
通过执行诸如填充之类的最终操作完成哈希计算。 |
String |
getAlgorithm()
返回标识算法的独立于实现细节的字符串。 |
int |
getDigestLength()
返回以字节为单位的摘要长度,如果提供程序不支持此操作并且实现是不可复制的,则返回 0。 |
static MessageDigest |
getInstance(String algorithm)
生成实现指定摘要算法的 MessageDigest 对象。 |
static MessageDigest |
getInstance(String algorithm,
Provider provider)
生成实现指定提供程序提供的指定算法的 MessageDigest 对象,如果该算法可从指定的提供程序得到的话。 |
static MessageDigest |
getInstance(String algorithm,
String provider)
生成实现指定提供程序提供的指定算法的 MessageDigest 对象,如果该算法可从指定的提供程序得到的话。 |
Provider |
getProvider()
返回此信息摘要对象的提供程序。 |
static boolean |
isEqual(byte[] digesta,
byte[] digestb)
比较两个摘要的相等性。 |
void |
reset()
重置摘要以供再次使用。 |
String |
toString()
返回此信息摘要对象的字符串表示形式。 |
void |
update(byte input)
使用指定的字节更新摘要。 |
void |
update(byte[] input)
使用指定的字节数组更新摘要。 |
void |
update(byte[] input,
int offset,
int len)
使用指定的字节数组,从指定的偏移量开始更新摘要。 |
void |
update(ByteBuffer input)
使用指定的 ByteBuffer 更新摘要。 |
从类 java.security.MessageDigestSpi 继承的方法 |
---|
engineDigest, engineDigest, engineGetDigestLength, engineReset, engineUpdate, engineUpdate, engineUpdate |
从类 java.lang.Object 继承的方法 |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
构造方法详细信息 |
---|
protected MessageDigest(String algorithm)
algorithm
- 摘要算法的标准名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。方法详细信息 |
---|
public static MessageDigest getInstance(String algorithm) throws NoSuchAlgorithmException
algorithm
- 所请求算法的名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。
NoSuchAlgorithmException
- 如果算法在调用方环境中不可用。public static MessageDigest getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
algorithm
- 所请求算法的名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。provider
- 提供程序的名称。
NoSuchAlgorithmException
- 如果请求的提供程序提供的包中不存在该算法。
NoSuchProviderException
- 如果提供程序在环境中不可用。
IllegalArgumentException
- 如果提供程序的名称为 null 或空。Provider
public static MessageDigest getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
provider
不一定都需要注册。
algorithm
- 所请求算法的名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。provider
- 提供程序。
NoSuchAlgorithmException
- 如果请求的提供程序提供的包中不存在该算法。
IllegalArgumentException
- 如果 provider
为 null。Provider
public final Provider getProvider()
public void update(byte input)
input
- 用于更新摘要的字节。public void update(byte[] input, int offset, int len)
input
- 字节数组。offset
- 字节数组中的偏移量,操作从此处开始。len
- 要使用的字节数,始于 offset
。public void update(byte[] input)
input
- 字节数组。public final void update(ByteBuffer input)
input.position()
处的 input.remaining()
个字节更新摘要。一旦返回,该缓冲区的位置将等于它的界限;它的界限将不会更改。
input
- ByteBufferpublic byte[] digest()
public int digest(byte[] buf, int offset, int len) throws DigestException
buf
- 存放计算摘要的输出缓冲区offset
- 输出缓冲区中的偏移量,从此处开始存储摘要。len
- 在 buf 中分配给摘要的字节数
buf
中的字节数
DigestException
- 如果发生错误。public byte[] digest(byte[] input)
update(input)
,向 update
方法传递 input 数组,然后调用 digest()
。
input
- 在完成摘要计算前要更新的输入。
public String toString()
public static boolean isEqual(byte[] digesta, byte[] digestb)
digesta
- 要比较的摘要之一。digestb
- 要比较的另一个摘要。
public void reset()
public final String getAlgorithm()
public final int getDigestLength()
public Object clone() throws CloneNotSupportedException
MessageDigestSpi
中的 clone
CloneNotSupportedException
- 如果对一个不支持 Cloneable
的实现调用此方法。Cloneable
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。