|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
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
類別中定義的方法;父級類別中的所有方法是供希望提供自己的資訊摘要演算法實作的加密服務提供者使用的。
DigestInputStream
,
DigestOutputStream
建構子摘要 | |
---|---|
protected |
MessageDigest(String algorithm)
創建具有指定演算法名稱的資訊摘要。 |
方法摘要 | |
---|---|
Object |
clone()
如果實作是可複製的,則返回一個副本。 |
byte[] |
digest()
通過執行諸如填充之類別的最終操作完成雜湊計算。 |
byte[] |
digest(byte[] input)
使用指定的 byte 陣列對摘要進行最後更新,然後完成摘要計算。 |
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)
使用指定的 byte 陣列更新摘要。 |
void |
update(byte[] input,
int offset,
int len)
使用指定的 byte 陣列,從指定的偏移量開始更新摘要。 |
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
此方法從首選 Provider 開始遍歷已註冊安全提供者列表。返回封裝取自第一個 Provider 的 MessageDigestSpi 實作的新 MessageDigest 物件,第一個 Provider 支持指定演算法。
注意,可以通過 Security.getProviders()
方法獲取已註冊提供者列表。
algorithm
- 所請求演算法的名稱。有關標準演算法名稱的資訊,請參閱
Java Cryptography Architecture API Specification & Reference 中的附錄 A。
NoSuchAlgorithmException
- 如果沒有 Provider 支持指定演算法的 MessageDigestSpi 實作Provider
public static MessageDigest getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
返回封裝 MessageDigestSpi 實作的新 MessageDigest 物件,該實作取自指定提供者。指定提供者必須在安全提供者列表中註冊。
注意,可以通過 Security.getProviders()
方法獲取已註冊提供者列表。
algorithm
- 所請求演算法的名稱。有關標準演算法名稱的資訊,請參閱
Java Cryptography Architecture API Specification & Reference 中的附錄 A。provider
- 提供者的名稱。
NoSuchAlgorithmException
- 如果指定演算法的 MessageDigestSpi 實作不能從指定提供者獲得。
NoSuchProviderException
- 如果指定提供者未在安全提供者列表中註冊。
IllegalArgumentException
- 如果提供者的名稱為 null 或空。Provider
public static MessageDigest getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
返回封裝 MessageDigestSpi 實作的新 MessageDigest 物件,該實作取自指定 Provider 物件。注意,指定 Provider 物件無需在提供者列表中註冊。
algorithm
- 所請求演算法的名稱。有關標準演算法名稱的資訊,請參閱
Java Cryptography Architecture API Specification & Reference 中的附錄 A。provider
- 提供者。
NoSuchAlgorithmException
- 如果指定演算法的 MessageDigestSpi 實作不能從指定的提供者物件獲得。
IllegalArgumentException
- 如果指定的提供者為 null。Provider
public final Provider getProvider()
public void update(byte input)
input
- 用於更新摘要的位元組。public void update(byte[] input, int offset, int len)
input
- byte 陣列。offset
- byte 陣列中的偏移量,操作從此處開始。len
- 要使用的位元組數,始於 offset
。public void update(byte[] input)
input
- byte 陣列。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()
Object
中的 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. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。