JavaTM 2 Platform
Standard Ed. 6

javax.crypto
類別 Mac

java.lang.Object
  繼承者 javax.crypto.Mac
所有已實作的介面:
Cloneable

public class Mac
extends Object
implements Cloneable

此類別提供“訊息驗證碼”(Message Authentication Code,MAC)演算法的功能。

MAC 基於秘密密鑰提供一種方式來檢查在不可靠介質上進行傳輸或存儲的資訊的完整性。通常,訊息驗證碼在共享秘密密鑰的兩個參與者之間使用,以驗證這兩者之間傳輸的資訊。

基於加密雜湊函數的 MAC 機制也叫作 HMAC。結合秘密共享密鑰,HMAC 可以用於任何加密雜湊函數(如 MD5 或 SHA-1)。HMAC 在 RFC 2104 中指定。

從以下版本開始:
1.4

建構子摘要
protected Mac(MacSpi macSpi, Provider provider, String algorithm)
          創建一個 MAC 物件。
 
方法摘要
 Object clone()
          如果提供者實作可以複製,則返回一個副本。
 byte[] doFinal()
          完成 MAC 操作。
 byte[] doFinal(byte[] input)
          處理給定的 byte 陣列並完成 MAC 操作。
 void doFinal(byte[] output, int outOffset)
          完成 MAC 操作。
 String getAlgorithm()
          返回此 Mac 物件的演算法名稱。
static Mac getInstance(String algorithm)
          返回實作指定 MAC 演算法的 Mac 物件。
static Mac getInstance(String algorithm, Provider provider)
          返回實作指定 MAC 演算法的 Mac 物件。
static Mac getInstance(String algorithm, String provider)
          返回實作指定 MAC 演算法的 Mac 物件。
 int getMacLength()
          返回 MAC 的長度,以位元組為單位。
 Provider getProvider()
          返回此 Mac 物件的提供者。
 void init(Key key)
          用給定的密鑰初始化此 Mac 物件。
 void init(Key key, AlgorithmParameterSpec params)
          用給定的密鑰和演算法參數初始化此 Mac 物件。
 void reset()
          重置此 Mac 物件。
 void update(byte input)
          處理給定的位元組。
 void update(byte[] input)
          處理給定的 byte 陣列。
 void update(byte[] input, int offset, int len)
          從 offset(包含)開始,處理 input 中的前 len 個位元組。
 void update(ByteBuffer input)
          從 input.position() 開始,處理 ByteBuffer input 中的 input.remaining() 個位元組。
 
從類別 java.lang.Object 繼承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

Mac

protected Mac(MacSpi macSpi,
              Provider provider,
              String algorithm)
創建一個 MAC 物件。

參數:
macSpi - 代理
provider - 提供者
algorithm - 演算法
方法詳細資訊

getAlgorithm

public final String getAlgorithm()
返回此 Mac 物件的演算法名稱。

此名稱與創建此 Mac 物件的 getInstance 調用之一中指定的名稱相同。

返回:
Mac 物件的演算法名稱。

getInstance

public static final Mac getInstance(String algorithm)
                             throws NoSuchAlgorithmException
返回實作指定 MAC 演算法的 Mac 物件。

此方法從首選 Provider 開始遍歷已註冊安全提供者列表。返回一個封裝 MacSpi 實作的新 Mac 物件,該實作取自支持指定演算法的第一個 Provider。

注意,可以通過 Security.getProviders() 方法獲取已註冊提供者列表。

參數:
algorithm - 所請求 MAC 演算法的標準名稱。有關標準演算法名稱的資訊,請參閱 Java Cryptography Architecture Reference Guide 中的附錄 A。
返回:
新的 Mac 物件。
拋出:
NoSuchAlgorithmException - 如果沒有 Provider 支持指定演算法的 MacSpi 實作。
另請參見:
Provider

getInstance

public static final Mac getInstance(String algorithm,
                                    String provider)
                             throws NoSuchAlgorithmException,
                                    NoSuchProviderException
返回實作指定 MAC 演算法的 Mac 物件。

返回一個封裝 MacSpi 實作的新 Mac 物件,該實作自指定的提供者。指定提供者必須在安全提供者列表中註冊。

注意,可以通過 Security.getProviders() 方法獲取已註冊提供者列表。

參數:
algorithm - 所請求 MAC 演算法的標準名稱。有關標準演算法名稱的資訊,請參閱 Java Cryptography Architecture Reference Guide 中的附錄 A。
provider - 提供者的名稱。
返回:
新的 Mac 物件。
拋出:
NoSuchAlgorithmException - 如果不能從指定提供者獲得指定演算法的 MacSpi 實作。
NoSuchProviderException - 如果指定提供者未在安全提供者列表中註冊。
IllegalArgumentException - 如果 provider 為 null 或空。
另請參見:
Provider

getInstance

public static final Mac getInstance(String algorithm,
                                    Provider provider)
                             throws NoSuchAlgorithmException
返回實作指定 MAC 演算法的 Mac 物件。

返回一個封裝 MacSpi 實作的新 Mac 物件,該實作取自指定的 Provider 物件。注意,指定的 Provider 物件無需在提供者列表中註冊。

參數:
algorithm - 所請求 MAC 演算法的標準名稱。有關標準演算法名稱的資訊,請參閱 Java Cryptography Architecture Reference Guide 中的附錄 A。
provider - 提供者。
返回:
新的 Mac 物件。
拋出:
NoSuchAlgorithmException - 如果不能從指定 Provider 物件獲得指定演算法的 MacSpi 實作。
IllegalArgumentException - 如果 provider 為 null。
另請參見:
Provider

getProvider

public final Provider getProvider()
返回此 Mac 物件的提供者。

返回:
Mac 物件的提供者。

getMacLength

public final int getMacLength()
返回 MAC 的長度,以位元組為單位。

返回:
MAC 長度,以位元組為單位。

init

public final void init(Key key)
                throws InvalidKeyException
用給定的密鑰初始化此 Mac 物件。

參數:
key - 密鑰。
拋出:
InvalidKeyException - 如果給定密鑰不適合初始化此 MAC。

init

public final void init(Key key,
                       AlgorithmParameterSpec params)
                throws InvalidKeyException,
                       InvalidAlgorithmParameterException
用給定的密鑰和演算法參數初始化此 Mac 物件。

參數:
key - 密鑰。
params - 演算法參數。
拋出:
InvalidKeyException - 如果給定密鑰不適合初始化此 MAC。
InvalidAlgorithmParameterException - 如果給定演算法參數不適合此 MAC。

update

public final void update(byte input)
                  throws IllegalStateException
處理給定的位元組。

參數:
input - 要處理的輸入位元組。
拋出:
IllegalStateException - 如果尚未初始化此 Mac

update

public final void update(byte[] input)
                  throws IllegalStateException
處理給定的 byte 陣列。

參數:
input - 要處理的 byte 陣列。
拋出:
IllegalStateException - 如果尚未初始化此 Mac

update

public final void update(byte[] input,
                         int offset,
                         int len)
                  throws IllegalStateException
offset(包含)開始,處理 input 中的前 len 個位元組。

參數:
input - 輸入緩衝區。
offset - input 中輸入起始處的偏移量。
len - 要處理的位元組數。
拋出:
IllegalStateException - 如果尚未初始化此 Mac

update

public final void update(ByteBuffer input)
input.position() 開始,處理 ByteBuffer input 中的 input.remaining() 個位元組。返回時,緩衝區的位置將等於其限制;其限制不變。

參數:
input - ByteBuffer
拋出:
IllegalStateException - 如果尚未初始化此 Mac
從以下版本開始:
1.5

doFinal

public final byte[] doFinal()
                     throws IllegalStateException
完成 MAC 操作。

對此方法的調用將此 Mac 物件重置為上一次調用 init(Key)init(Key, AlgorithmParameterSpec) 初始化的狀態。也就是說,該物件被重置,並可通過重新調用 updatedoFinal(如果需要)從同一個密鑰產生另一個 MAC。(若要用不同的密鑰重用此 Mac 物件,則必須通過調用 init(Key)init(Key, AlgorithmParameterSpec) 對其重新初始化)。

返回:
MAC 的結果。
拋出:
IllegalStateException - 如果尚未初始化此 Mac

doFinal

public final void doFinal(byte[] output,
                          int outOffset)
                   throws ShortBufferException,
                          IllegalStateException
完成 MAC 操作。

對此方法的調用將此 Mac 物件重置為上一次調用 init(Key)init(Key, AlgorithmParameterSpec) 初始化的狀態。也就是說,該物件被重置,並可通過重新調用 updatedoFinal(如果需要)從同一個密鑰產生另一個 MAC。(若要用不同的密鑰重用此 Mac 物件,則必須通過調用 init(Key)init(Key, AlgorithmParameterSpec) 對其重新初始化)。

MAC 結果將存儲在 output 中,從 outputOffset(包含)開始。

參數:
output - 存儲 MAC 結果的緩衝區
outOffset - output 中存儲 MAC 處的偏移量
拋出:
ShortBufferException - 如果給定輸出緩衝區太小不能存儲該結果
IllegalStateException - 如果尚未初始化此 Mac

doFinal

public final byte[] doFinal(byte[] input)
                     throws IllegalStateException
處理給定的 byte 陣列並完成 MAC 操作。

對此方法的調用將此 Mac 物件重置為上一次調用 init(Key)init(Key, AlgorithmParameterSpec) 初始化的狀態。也就是說,該物件被重置,並可通過重新調用 updatedoFinal(如果需要)從同一個密鑰產生另一個 MAC。(若要用不同的密鑰重用此 Mac 物件,則必須通過調用 init(Key)init(Key, AlgorithmParameterSpec) 對其重新初始化)。

參數:
input - 位元組中的資料
返回:
MAC 的結果。
拋出:
IllegalStateException - 如果尚未初始化此 Mac

reset

public final void reset()
重置此 Mac 物件。

對此方法的調用將此 Mac 物件重置為上一次調用 init(Key)init(Key, AlgorithmParameterSpec) 初始化的狀態。也就是說,該物件被重置,並可通過重新調用 updatedoFinal(如果需要)從同一個密鑰產生另一個 MAC。(若要用不同的密鑰重用此 Mac 物件,則必須通過調用 init(Key)init(Key, AlgorithmParameterSpec) 對其重新初始化)。


clone

public final Object clone()
                   throws CloneNotSupportedException
如果提供者實作可以複製,則返回一個副本。

覆寫:
類別 Object 中的 clone
返回:
如果提供者實作可以複製,則返回一個副本。
拋出:
CloneNotSupportedException - 如果對不支持 Cloneable 的代理調用此方法。
另請參見:
Cloneable

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only