|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.security
类 MessageDigest
java.lang.Object java.security.MessageDigestSpi java.security.MessageDigest
-
public abstract class MessageDigest
- extends MessageDigestSpi
此 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 |
构造方法详细信息 |
---|
MessageDigest
protected MessageDigest(String algorithm)
-
创建具有指定算法名称的信息摘要。
- 参数:
-
algorithm
- 摘要算法的标准名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。
方法详细信息 |
---|
getInstance
public static MessageDigest getInstance(String algorithm) throws NoSuchAlgorithmException
- 生成实现指定摘要算法的 MessageDigest 对象。如果默认的提供程序包提供所请求的摘要算法的实现,则返回包含该实现的 MessageDigest 的实例。如果默认包中不存在该算法,则搜索其他包。
-
- 参数:
-
algorithm
- 所请求算法的名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。 - 返回:
- 实现指定算法的 Message Digest 对象。
- 抛出:
-
NoSuchAlgorithmException
- 如果算法在调用方环境中不可用。
getInstance
public static MessageDigest getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
- 生成实现指定提供程序提供的指定算法的 MessageDigest 对象,如果该算法可从指定的提供程序得到的话。
-
- 参数:
-
algorithm
- 所请求算法的名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。 -
provider
- 提供程序的名称。 - 返回:
- 实现指定算法的 Message Digest 对象。
- 抛出:
-
NoSuchAlgorithmException
- 如果请求的提供程序提供的包中不存在该算法。 -
NoSuchProviderException
- 如果提供程序在环境中不可用。 -
IllegalArgumentException
- 如果提供程序的名称为 null 或空。 - 另请参见:
-
Provider
getInstance
public static MessageDigest getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
-
生成实现指定提供程序提供的指定算法的 MessageDigest 对象,如果该算法可从指定的提供程序得到的话。注:
provider
不一定都需要注册。 -
- 参数:
-
algorithm
- 所请求算法的名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。 -
provider
- 提供程序。 - 返回:
- 实现指定算法的 Message Digest 对象。
- 抛出:
-
NoSuchAlgorithmException
- 如果请求的提供程序提供的包中不存在该算法。 -
IllegalArgumentException
- 如果provider
为 null。 - 从以下版本开始:
- 1.4
- 另请参见:
-
Provider
getProvider
public final Provider getProvider()
- 返回此信息摘要对象的提供程序。
-
- 返回:
- 此信息摘要对象的提供程序。
update
public void update(byte input)
- 使用指定的字节更新摘要。
-
- 参数:
-
input
- 用于更新摘要的字节。
update
public void update(byte[] input, int offset, int len)
- 使用指定的字节数组,从指定的偏移量开始更新摘要。
-
- 参数:
-
input
- 字节数组。 -
offset
- 字节数组中的偏移量,操作从此处开始。 -
len
- 要使用的字节数,始于offset
。
update
public void update(byte[] input)
- 使用指定的字节数组更新摘要。
-
- 参数:
-
input
- 字节数组。