|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.crypto.Cipher
public class Cipher
此類別為加密和解密提供密碼功能。它構成了 Java Cryptographic Extension (JCE) 框架的核心。
為創建 Cipher 物件,應用程序調用 Cipher 的 getInstance
方法並將所請求轉換 的名稱傳遞給它。還可以指定提供者的名稱(可選)。
轉換 是一個字元串,它描述為產生某種輸出而在給定的輸入上執行的操作(或一組操作)。轉換始終包括加密演算法的名稱(例如,DES),後面可能跟有一個反饋網要和填充方案。
轉換具有以下形式:
(後一種情況下,使用網要和填充方案特定於提供者的預設值)。例如,以下是有效的轉換:
Cipher c = Cipher.getInstance("DES/CBC/PKCS5Padding");使用
CFB
和 OFB
之類別的網要,Cipher 塊可以加密單元中小於該 Cipher 的實際塊大小的資料。請求這樣一個網要時,可以指定一次處理的位數(可選):將此數添加到網要名稱中,正如 "DES/CFB8/NoPadding
" 和 "DES/OFB32/PKCS5Padding
" 轉換所示。如果未指定該數,則將使用特定於提供者的預設值。(例如,SunJCE 提供者對 DES 使用預設的 64 位)。因此,通過使用如 CFB8 或 OFB8 的 8 位網要,Cipher 塊可以被轉換為導向位元組的 Cipher 串流。
KeyGenerator
,
SecretKey
欄位摘要 | |
---|---|
static int |
DECRYPT_MODE
用於將 Cipher 初始化為解密網要的常數。 |
static int |
ENCRYPT_MODE
用於將 Cipher 初始化為加密網要的常數。 |
static int |
PRIVATE_KEY
用於表示要解套件的密鑰為“私鑰”的常數。 |
static int |
PUBLIC_KEY
用於表示要解套件的密鑰為“公鑰”的常數。 |
static int |
SECRET_KEY
用於表示要解套件的密鑰為“秘密密鑰”的常數。 |
static int |
UNWRAP_MODE
用於將 Cipher 初始化為密鑰解包網要的常數。 |
static int |
WRAP_MODE
用於將 Cipher 初始化為密鑰包裹網要的常數。 |
建構子摘要 | |
---|---|
protected |
Cipher(CipherSpi cipherSpi,
Provider provider,
String transformation)
創建 Cipher 物件。 |
方法摘要 | |
---|---|
byte[] |
doFinal()
結束多部分加密或解密操作(具體取決於此 Cipher 的初始化方式)。 |
byte[] |
doFinal(byte[] input)
按單部分操作加密或解密資料,或者結束一個多部分操作。 |
int |
doFinal(byte[] output,
int outputOffset)
結束多部分加密或解密操作(具體取決於此 Cipher 的初始化方式)。 |
byte[] |
doFinal(byte[] input,
int inputOffset,
int inputLen)
按單部分操作加密或解密資料,或者結束一個多部分操作。 |
int |
doFinal(byte[] input,
int inputOffset,
int inputLen,
byte[] output)
按單部分操作加密或解密資料,或者結束一個多部分操作。 |
int |
doFinal(byte[] input,
int inputOffset,
int inputLen,
byte[] output,
int outputOffset)
按單部分操作加密或解密資料,或者結束一個多部分操作。 |
int |
doFinal(ByteBuffer input,
ByteBuffer output)
按單部分操作加密或解密資料,或者結束一個多部分操作。 |
String |
getAlgorithm()
返回此 Cipher 物件的演算法名稱。 |
int |
getBlockSize()
返回塊的大小(以位元組為單位)。 |
ExemptionMechanism |
getExemptionMechanism()
返回此 Cipher 使用的豁免 (exemption) 機制物件。 |
static Cipher |
getInstance(String transformation)
返回實作指定轉換的 Cipher 物件。 |
static Cipher |
getInstance(String transformation,
Provider provider)
返回實作指定轉換的 Cipher 物件。 |
static Cipher |
getInstance(String transformation,
String provider)
返回實作指定轉換的 Cipher 物件。 |
byte[] |
getIV()
返回新緩衝區中的初始化向量 (IV)。 |
static int |
getMaxAllowedKeyLength(String transformation)
根據所安裝的 JCE 仲裁策略檔案,返回指定轉換的最大密鑰長度。 |
static AlgorithmParameterSpec |
getMaxAllowedParameterSpec(String transformation)
根據仲裁策略檔案,返回包含最大 Cipher 參數值的 AlgorithmParameterSpec 物件。 |
int |
getOutputSize(int inputLen)
根據給定的輸入長度 inputLen (以位元組為單位),返回保存下一個 update 或 doFinal 操作結果所需的輸出緩衝區長度(以位元組為單位)。 |
AlgorithmParameters |
getParameters()
返回此 Cipher 使用的參數。 |
Provider |
getProvider()
返回此 Cipher 物件的提供者。 |
void |
init(int opmode,
Certificate certificate)
用取自給定證書的公鑰初始化此 Cipher。 |
void |
init(int opmode,
Certificate certificate,
SecureRandom random)
用取自給定證書的公鑰和隨機源初始化此 Cipher。 |
void |
init(int opmode,
Key key)
用密鑰初始化此 Cipher。 |
void |
init(int opmode,
Key key,
AlgorithmParameters params)
用密鑰和一組演算法參數初始化此 Cipher。 |
void |
init(int opmode,
Key key,
AlgorithmParameterSpec params)
用密鑰和一組演算法參數初始化此 Cipher。 |
void |
init(int opmode,
Key key,
AlgorithmParameterSpec params,
SecureRandom random)
用一個密鑰、一組演算法參數和一個隨機源初始化此 Cipher。 |
void |
init(int opmode,
Key key,
AlgorithmParameters params,
SecureRandom random)
用一個密鑰、一組演算法參數和一個隨機源初始化此 Cipher。 |
void |
init(int opmode,
Key key,
SecureRandom random)
用密鑰和隨機源初始化此 Cipher。 |
Key |
unwrap(byte[] wrappedKey,
String wrappedKeyAlgorithm,
int wrappedKeyType)
解包一個以前包裹的密鑰。 |
byte[] |
update(byte[] input)
繼續多部分加密或解密操作(具體取決於此 Cipher 的初始化方式),以處理其他資料部分。 |
byte[] |
update(byte[] input,
int inputOffset,
int inputLen)
繼續多部分加密或解密操作(具體取決於此 Cipher 的初始化方式),以處理其他資料部分。 |
int |
update(byte[] input,
int inputOffset,
int inputLen,
byte[] output)
繼續多部分加密或解密操作(具體取決於此 Cipher 的初始化方式),以處理其他資料部分。 |
int |
update(byte[] input,
int inputOffset,
int inputLen,
byte[] output,
int outputOffset)
繼續多部分加密或解密操作(具體取決於此 Cipher 的初始化方式),以處理其他資料部分。 |
int |
update(ByteBuffer input,
ByteBuffer output)
繼續多部分加密或解密操作(具體取決於此 Cipher 的初始化方式),以處理其他資料部分。 |
byte[] |
wrap(Key key)
包裹密鑰。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
欄位詳細資訊 |
---|
public static final int ENCRYPT_MODE
public static final int DECRYPT_MODE
public static final int WRAP_MODE
public static final int UNWRAP_MODE
public static final int PUBLIC_KEY
public static final int PRIVATE_KEY
public static final int SECRET_KEY
建構子詳細資訊 |
---|
protected Cipher(CipherSpi cipherSpi, Provider provider, String transformation)
cipherSpi
- 代理provider
- 提供者transformation
- 轉換方法詳細資訊 |
---|
public static final Cipher getInstance(String transformation) throws NoSuchAlgorithmException, NoSuchPaddingException
Cipher
物件。
此方法從首選 Provider 開始遍歷已註冊安全提供者列表。返回一個封裝 CipherSpi 實作的新 Cipher 物件,該實作取自支持指定演算法的第一個 Provider。
注意,可以通過 Security.getProviders()
方法獲取已註冊提供者列表。
transformation
- 轉換的名稱,例如 DES/CBC/PKCS5Padding。有關標準轉換名稱的資訊,請參見
Java Cryptography Architecture Reference Guide 的附錄 A。
NoSuchAlgorithmException
- 如果 transformation
為 null、空、無效格式,或者沒有 Provider 支持指定演算法的 CipherSpi 實作。
NoSuchPaddingException
- 如果 transformation
套件含的填充方案不可用。Provider
public static final Cipher getInstance(String transformation, String provider) throws NoSuchAlgorithmException, NoSuchProviderException, NoSuchPaddingException
Cipher
物件。
返回一個封裝 CipherSpi 實作的新 Cipher 物件,該實作取自指定提供者。指定提供者必須在安全提供者列表中註冊。
注意,可以通過 Security.getProviders()
方法獲取已註冊提供者列表。
transformation
- 轉換的名稱,例如 DES/CBC/PKCS5Padding。有關標準轉換名稱的資訊,請參見
Java Cryptography Architecture Reference Guide 的附錄 A。provider
- 提供者的名稱。
NoSuchAlgorithmException
- 如果 transformation
為 null、空、無效格式,或者不能從指定提供者獲得指定演算法的 CipherSpi 實作。
NoSuchProviderException
- 如果指定提供者未在安全提供者列表中註冊。
NoSuchPaddingException
- 如果 transformation
套件含的填充方案不可用。
IllegalArgumentException
- 如果 provider
為 null 或空。Provider
public static final Cipher getInstance(String transformation, Provider provider) throws NoSuchAlgorithmException, NoSuchPaddingException
Cipher
物件。
返回一個封裝 CipherSpi 實作的新 Cipher 物件,該實作取自指定的 Provider 物件。 注意,指定的 Provider 物件無需在提供者列表中註冊。
transformation
- 轉換的名稱,例如 DES/CBC/PKCS5Padding。有關標準轉換名稱的資訊,請參見
Java Cryptography Architecture Reference Guide 的附錄 A。provider
- 提供者。
NoSuchAlgorithmException
- 如果 transformation
為 null、空、無效格式,或者不能從指定 Provider 物件獲得指定演算法的 CipherSpi 實作。
NoSuchPaddingException
- 如果 transformation
套件含的填充方案不可用。
IllegalArgumentException
- 如果 provider
為 null。Provider
public final Provider getProvider()
Cipher
物件的提供者。
Cipher
物件的提供者public final String getAlgorithm()
Cipher
物件的演算法名稱。
這與創建此 Cipher
物件的 getInstance
調用之一指定的名稱相同。
Cipher
物件的演算法名稱。public final int getBlockSize()
public final int getOutputSize(int inputLen)
inputLen
(以位元組為單位),返回保存下一個 update
或 doFinal
操作結果所需的輸出緩衝區長度(以位元組為單位)。
此調用還考慮到任何取自上一個 update
調用的未處理(已快取記憶體)資料和填充。
下一個 update
或 doFinal
調用的實際輸出長度可能小於此方法返回的長度。
inputLen
- 輸入長度(以位元組為單位)
IllegalStateException
- 如果此 Cipher 處於錯誤的狀態(例如,尚未初始化)public final byte[] getIV()
在創建隨機 IV 的情況下,或者在基於密碼加密或解密的上下文中(其中,IV 派生自使用者提供的密碼)此方法很有用。
public final AlgorithmParameters getParameters()
返回的參數可能與初始化此 Cipher 所使用的參數相同;如果此 Cipher 需要演算法參數但卻未使用任何參數進行初始化,則返回的參數將由預設值和底層 Cipher 實作所使用的隨機參數值組成。
public final ExemptionMechanism getExemptionMechanism()
public final void init(int opmode, Key key) throws InvalidKeyException
為以下 4 種操作之一初始化該 Cipher:加密、解密、密鑰包裹或密鑰解包,具體取決於 opmode
的值。
如果此 Cipher 需要任何無法從給定 key
派生的演算法參數,則在為加密或密鑰包裹初始化時,底層 Cipher 實作應自己產生所需的參數(使用特定於提供者的預設值或隨機值);在為解密或密鑰解包初始化時,將引發 InvalidKeyException
。可以用 getParameters
或 getIV
獲取產生的參數(如果該參數為 IV)。
如果此 Cipher(包括其底層反饋或填充方案)需要隨機位元組(例如,用於參數產生),那麼它將使用具有最高優先級的已安裝提供者的
實作作為隨機源獲取這些位元組。(如果已安裝的提供者都不提供 SecureRandom 實作,則將使用系統提供的隨機源)。
SecureRandom
注意,初始化 Cipher 物件時,它將失去所有以前獲得的狀態。換句話說,初始化 Cipher 相當於創建該 Cipher 的一個新實例並將其初始化。
opmode
- 此 Cipher 的操作網要(為以下之一:ENCRYPT_MODE
、DECRYPT_MODE
、WRAP_MODE
或 UNWRAP_MODE
)key
- 密鑰
InvalidKeyException
- 如果給定的 key 不適合初始化此 Cipher;如果此 Cipher 為解密初始化,並且所需演算法參數無法從給定的 key 確定;如果給定 key 的鍵大小超出所允許的最大值(由已配置的仲裁策略檔案確定)。public final void init(int opmode, Key key, SecureRandom random) throws InvalidKeyException
為以下 4 種操作之一初始化該 Cipher:加密、解密、密鑰包裹或密鑰解包,具體取決於 opmode
的值。
如果此 Cipher 需要演算法參數,而參數無法從給定的 key
派生,則在為加密或密鑰包裹初始化時,底層 Cipher 實作應自己產生所需的參數(使用特定於提供者的預設值或隨機值);在為解密或密鑰解包初始化時,將引發 InvalidKeyException
。可以用 getParameters
或 getIV
獲取產生的參數(如果該參數為 IV)。
如果此 Cipher(包括其底層反饋或填充方案)需要隨機位元組(例如,用於參數產生),那麼它將從 random
獲取這些隨機位元組。
注意,初始化 Cipher 物件時,它將失去所有以前獲得的狀態。換句話說,初始化 Cipher 相當於創建該 Cipher 的一個新實例並將其初始化。
opmode
- 此 Cipher 的操作網要(為以下之一:ENCRYPT_MODE
、DECRYPT_MODE
、WRAP_MODE
或 UNWRAP_MODE
)key
- 加密密鑰random
- 隨機源
InvalidKeyException
- 如果給定的 key 不適合初始化此 Cipher;如果此 Cipher 為解密初始化,並且所需演算法參數無法從給定的 key 確定;如果給定 key 的鍵大小超出所允許的最大值(由已配置的仲裁策略檔案確定)。public final void init(int opmode, Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException
為以下 4 種操作之一初始化該 Cipher:加密、解密、密鑰包裹或密鑰解包,具體取決於 opmode
的值。
如果此 Cipher 需要演算法參數,而 params
為 null,則在為加密或密鑰包裹初始化時,底層 Cipher 實作應自己產生所需的參數(使用特定於提供者的預設值或隨機值);在為解密或密鑰解包初始化時,將引發 InvalidAlgorithmParameterException
。可以用 getParameters
或 getIV
獲取產生的參數(如果該參數為 IV)。
如果此 Cipher(包括其底層反饋或填充方案)需要隨機位元組(例如,用於參數產生),那麼它將使用具有最高優先級的已安裝提供者的
實作作為隨機源來獲取這些位元組。(如果已安裝的提供者都不提供 SecureRandom 實作,則將使用系統提供的隨機源)。
SecureRandom
注意,初始化 Cipher 物件時,它將失去所有以前獲得的狀態。換句話說,初始化 Cipher 相當於創建該 Cipher 的一個新實例並將其初始化。
opmode
- 此 Cipher 的操作網要(為以下之一:ENCRYPT_MODE
、DECRYPT_MODE
、WRAP_MODE
或 UNWRAP_MODE
)key
- 加密密鑰params
- 演算法參數
InvalidKeyException
- 如果給定的 key 不適合初始化此 Cipher,或其它的鍵大小超出所允許的最大(由已配置的仲裁策略檔案確定)。
InvalidAlgorithmParameterException
- 如果給定的演算法參數不適合此 Cipher;此 Cipher 為解密初始化,並且需要演算法參數而 params
為 null;給定的演算法參數所含的加密強度超出了合法限制(由已配置的仲裁策略檔案確定)。public final void init(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
為以下 4 種操作之一初始化該 Cipher:加密、解密、密鑰包裹或密鑰解包,具體取決於 opmode
的值。
如果此 Cipher 需要演算法參數,而 params
為 null,則在為加密或密鑰包裹初始化時,底層 Cipher 實作應自己產生所需的參數(使用特定於提供者的預設值或隨機值);在為解密或密鑰解包初始化時,將引發 InvalidAlgorithmParameterException
。可以用 getParameters
或 getIV
獲取產生的參數(如果該參數為 IV)。
如果此 Cipher(包括其底層反饋或填充方案)需要隨機位元組(例如,用於參數產生),那麼它將從 random
獲取這些隨機位元組。
注意,初始化 Cipher 物件時,它將失去所有以前獲得的狀態。換句話說,初始化 Cipher 相當於創建該 Cipher 的一個新實例並將其初始化。
opmode
- 此 Cipher 的操作網要(為以下之一:ENCRYPT_MODE
、DECRYPT_MODE
、WRAP_MODE
或 UNWRAP_MODE
)key
- 加密密鑰params
- 演算法參數random
- 隨機源
InvalidKeyException
- 如果給定的 key 不適合初始化此 Cipher,或其鍵大小超出所允許的最大值(由已配置的仲裁策略檔案確定)。
InvalidAlgorithmParameterException
- 如果給定的演算法參數不適合此 Cipher;此 Cipher 為解密初始化,並且需要演算法參數而 params
為 null;給定的演算法參數所含的加密強度超出了合法限制(由已配置的仲裁策略檔案確定)。public final void init(int opmode, Key key, AlgorithmParameters params) throws InvalidKeyException, InvalidAlgorithmParameterException
為以下 4 種操作之一初始化該 Cipher:加密、解密、密鑰包裹或密鑰解包,具體取決於 opmode
的值。
如果此 Cipher 需要演算法參數,而 params
為 null,則在為加密或密鑰包裹初始化時,底層 Cipher 實作應自己產生所需的參數(使用特定於提供者的預設值或隨機值);在初始化為解密或密鑰解包時,將引發 InvalidAlgorithmParameterException
。可以用 getParameters
或 getIV
獲取產生的參數(如果該參數為 IV)。
如果此 Cipher(包括其底層反饋或填充方案)需要隨機位元組(例如,用於參數產生),那麼它將使用具有最高優先級的已安裝提供者的
實作作為隨機源來獲取這些位元組。(如果已安裝的提供者都不提供 SecureRandom 實作,則將使用系統提供的隨機源)。
SecureRandom
注意,初始化 Cipher 物件時,它將失去所有以前獲得的狀態。換句話說,初始化 Cipher 相當於創建該 Cipher 的一個新實例並將其初始化。
opmode
- 此 Cipher 的操作網要(為以下之一:ENCRYPT_MODE
、DECRYPT_MODE
、WRAP_MODE
或 UNWRAP_MODE
)key
- 加密密鑰params
- 演算法參數
InvalidKeyException
- 如果給定的 key 不適合初始化此 Cipher,或其鍵大小超出所允許的最大值(由已配置的仲裁策略檔案確定)。
InvalidAlgorithmParameterException
- 如果給定的演算法參數不適合此 Cipher;此 Cipher 為解密初始化,並且需要演算法參數而 params
為 null;給定的演算法參數所含的加密強度超出了合法限制(由已配置的仲裁策略檔案確定)。public final void init(int opmode, Key key, AlgorithmParameters params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
為以下 4 種操作之一初始化該 Cipher:加密、解密、密鑰包裹或密鑰解包,具體取決於 opmode
的值。
如果此 Cipher 需要演算法參數,而 params
為 null,則在為加密或密鑰包裹初始化時,底層 Cipher 實作應自己產生所需的參數(使用特定於提供者的預設值或隨機值);在為解密或密鑰解包初始化時,將引發 InvalidAlgorithmParameterException
。可以用 getParameters
或 getIV
獲取產生的參數(如果該參數為 IV)。
如果此 Cipher(包括其底層反饋或填充方案)需要隨機位元組(例如,用於參數產生),那麼它將從 random
獲取這些隨機位元組。
注意,初始化 Cipher 物件時,它將失去所有以前獲得的狀態。換句話說,初始化 Cipher 相當於創建該 Cipher 的一個新實例並將其初始化。
opmode
- 此 Cipher 的操作網要(為以下之一:ENCRYPT_MODE
、DECRYPT_MODE
、WRAP_MODE
或 UNWRAP_MODE
)key
- 加密密鑰params
- 演算法參數random
- 隨機源
InvalidKeyException
- 如果給定的 key 不適合初始化此 Cipher,或其鍵大小超出所允許的最大值(由已配置的仲裁策略檔案確定)。
InvalidAlgorithmParameterException
- 如果給定的演算法參數不適合此 Cipher;此 Cipher 為解密初始化,並且需要演算法參數而 params
為 null;給定的演算法參數所含的加密強度超出了合法限制(由已配置的仲裁策略檔案確定)。public final void init(int opmode, Certificate certificate) throws InvalidKeyException
為以下 4 種操作之一初始化該 Cipher:加密、解密、密鑰包裹或密鑰解包,具體取決於 opmode
的值。
如果證書型別為 X.509 並有一個標記為關鍵的 key usage 擴展欄位,且此 key usage 擴展欄位的值表示在 opmode
值所代表的操作中不應該使用該證書中的公鑰及其相應的私鑰,則拋出 InvalidKeyException
。
如果此 Cipher 需要演算法參數,而此參數無法從給定證書中的公鑰派生,則在為加密或密鑰包裹初始化時,底層 Cipher 實作應自己產生所需的參數(使用特定於提供者的預設值或隨機值);在為解密或密鑰解包初始化時,將引發 InvalidKeyException
。可以用 getParameters
或 getIV
獲取產生的參數(如果該參數為 IV)。
如果此 Cipher(包括其底層反饋或填充方案)需要隨機位元組(例如,用於參數產生),那麼它將使用具有最高優先級的已安裝提供者的 SecureRandom
實作作為隨機源獲取這些位元組。(如果已安裝的提供者都不提供 SecureRandom 實作,則將使用系統提供的隨機源)。
注意,初始化 Cipher 物件時,它將失去所有以前獲得的狀態。換句話說,初始化 Cipher 相當於創建該 Cipher 的一個新實例並將其初始化。
opmode
- 此 Cipher 的操作網要(為以下之一:ENCRYPT_MODE
、DECRYPT_MODE
、WRAP_MODE
或 UNWRAP_MODE
)certificate
- 證書
InvalidKeyException
- 如果給定證書中的公鑰不適合初始化此 Cipher;此 Cipher 為解密或解包密鑰初始化,並且所需演算法參數無法通過給定證書的公鑰確定;給定證書中公鑰的鍵大小超出所允許的最大值(由已配置的仲裁策略檔案確定)。public final void init(int opmode, Certificate certificate, SecureRandom random) throws InvalidKeyException
為以下 4 種操作之一初始化該 Cipher:加密、解密、密鑰包裹或密鑰解包,具體取決於 opmode
的值。
如果證書型別為 X.509 並有一個標記為關鍵的 key usage 擴展欄位,且此 key usage 擴展欄位的值表示在 opmode
值所代表的操作中不應該使用該證書中的公鑰及其相應的私鑰,則拋出 InvalidKeyException
。
如果此 Cipher 需要演算法參數,而此參數無法從給定 certificate
中的公鑰派生,則在為加密或密鑰包裹初始化時,底層 Cipher 實作應自己產生所需的參數(使用特定於提供者的預設值或隨機值);在為解密或密鑰解包初始化時,將引發 InvalidKeyException
。可以用 getParameters
或 getIV
獲取產生的參數(如果該參數為 IV)。
如果此 Cipher(包括其底層反饋或填充方案)需要隨機位元組(例如,用於參數產生),那麼它將從 random
獲取這些隨機位元組。
注意,初始化 Cipher 物件時,它將失去所有以前獲得的狀態。換句話說,初始化 Cipher 相當於創建該 Cipher 的一個新實例並將其初始化。
opmode
- 此 Cipher 的操作網要(為以下之一:ENCRYPT_MODE
、DECRYPT_MODE
、WRAP_MODE
或 UNWRAP_MODE
)certificate
- 證書random
- 隨機源
InvalidKeyException
- 如果給定證書中的公鑰不適合初始化此 Cipher;此 Cipher 為解密或解包密鑰初始化,並且所需演算法參數無法通過給定證書的公鑰確定;給定證書中公鑰的鍵大小超出所允許的最大值(由已配置的仲裁策略檔案確定)。public final byte[] update(byte[] input)
處理 input
緩衝區中的位元組,並將結果存儲在新的緩衝區中。
如果 input
長度為 0,則此方法返回 null
。
input
- 輸入緩衝區
IllegalStateException
- 如果此 Cipher 處於錯誤狀態(例如,尚未初始化)public final byte[] update(byte[] input, int inputOffset, int inputLen)
處理 input
緩衝區中從 inputOffset
開始(包含)的前 inputLen
個位元組,並將結果存儲在新的緩衝區中。
如果 inputLen
為 0,則此方法返回 null
。
input
- 輸入緩衝區inputOffset
- input
中輸入起始處的偏移量inputLen
- 輸入長度
IllegalStateException
- 如果此 Cipher 處於錯誤狀態(例如,尚未初始化)public final int update(byte[] input, int inputOffset, int inputLen, byte[] output) throws ShortBufferException
處理 input
緩衝區中從 inputOffset
開始(包含)的前 inputLen
個位元組,並將結果存儲在 output
緩衝區中。
如果 output
緩衝區太小無法保存該結果,則拋出 ShortBufferException
。這種情況下,使用一個稍大的緩衝區再次調用。使用 getOutputSize
確定輸出緩衝區應為多大。
如果 inputLen
為 0,則此方法返回的長度為 0。
註:此方法應該是複製安全 (copy-safe) 的,這意味著 input
和 output
緩衝區可參考相同的 byte 陣列,並且在將結果複製到輸出緩衝區時,不會覆寫任何未處理的輸入資料。
input
- 輸入緩衝區inputOffset
- input
中輸入起始處的偏移量inputLen
- 輸入長度output
- 保存結果的緩衝區
output
中存儲的位元組數
IllegalStateException
- 如果此 Cipher 處於錯誤狀態(例如,尚未初始化)
ShortBufferException
- 如果給定的輸出緩衝區太小而無法保存結果public final int update(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) throws ShortBufferException
處理 input
緩衝區中從 inputOffset
開始(包含)的前 inputLen
個位元組,並將結果存儲在 output
緩衝區中從 outputOffset
開始(包含)的位置。
如果 output
緩衝區太小無法保存該結果,則拋出 ShortBufferException
。這種情況下,使用一個稍大的緩衝區再次調用。使用 getOutputSize
確定輸出緩衝區應為多大。
如果 inputLen
為 0,則此方法返回的長度為 0。
註:此方法應該是複製安全的,這意味著 input
和 output
緩衝區可參考相同的 byte 陣列,並且在將結果複製到輸出緩衝區時,不會覆寫任何未處理的輸入資料。
input
- 輸入緩衝區inputOffset
- input
中輸入起始處的偏移量inputLen
- 輸入長度output
- 保存結果的緩衝區outputOffset
- output
中存儲結果處的偏移量
output
中存儲的位元組數
IllegalStateException
- 如果此 Cipher 處於錯誤狀態(例如,尚未初始化)
ShortBufferException
- 如果給定的輸出緩衝區太小而無法保存結果public final int update(ByteBuffer input, ByteBuffer output) throws ShortBufferException
處理從 input.position()
開始的所有 input.remaining()
個位元組。將結果存儲在輸出緩衝區中。返回時,輸入緩衝區的位置將等於其限制;其限制不變。輸出緩衝區的位置將前移 n,其中 n 為此方法返回的值;輸出緩衝區的限制不變。
如果 output.remaining()
個位元組還不夠保存該結果,則拋出 ShortBufferException
。這種情況下,使用一個稍大的緩衝區再次調用。使用 getOutputSize
確定輸出緩衝區應為多大。
註:此方法應該是複製安全的,這意味著 input
和 output
緩衝區可參考相同的記憶體塊,並且在將結果複製到輸出緩衝區時,不會覆寫任何未處理的輸入資料。
input
- 輸入 ByteBufferoutput
- 輸出 ByteBuffer
output
中存儲的位元組數
IllegalStateException
- 如果此 Cipher 處於錯誤狀態(例如,尚未初始化)
IllegalArgumentException
- 如果輸入和輸出為相同的物件
ReadOnlyBufferException
- 如果輸出緩衝區為只讀
ShortBufferException
- 如果輸出緩衝區中沒有足夠的空間public final byte[] doFinal() throws IllegalBlockSizeException, BadPaddingException
處理在上一次 update
操作中快取記憶體的輸入資料,其中應用了填充(如果請求)。結果將存儲在新緩衝區中。
結束時,此方法將此 Cipher 物件重置為上一次調用 init
初始化得到的狀態。即該物件被重置,並可用於加密或解密(具體取決於調用 init
時指定的操作網要)更多的資料。
註:如果拋出了任何異常,則再次使用此 Cipher 物件前需要將其重置。
IllegalStateException
- 如果此 Cipher 處於錯誤狀態(例如,尚未初始化)
IllegalBlockSizeException
- 如果此 Cipher 為 Cipher 塊,未請求任何填充(只針對加密網要),並且由此 Cipher 處理的資料總輸入長度不是塊大小的倍數;如果此加密演算法無法處理所提供的輸入資料。
BadPaddingException
- 如果此 Cipher 為解密網要,並且未請求填充(或不填充),但解密的資料沒有用適當的填充位元組進行限制public final int doFinal(byte[] output, int outputOffset) throws IllegalBlockSizeException, ShortBufferException, BadPaddingException
處理在上一次 update
操作中快取記憶體的輸入資料,其中應用了填充(如果請求)。結果存儲在 output
緩衝區中從 outputOffset
(包含)開始的位置。
如果 output
緩衝區太小無法保存該結果,則拋出 ShortBufferException
。這種情況下,使用一個稍大的緩衝區再次調用。使用 getOutputSize
確定輸出緩衝區應為多大。
結束時,此方法將此 Cipher 物件重置為上一次調用 init
初始化得到的狀態。即該物件被重置,並可用於加密或解密(具體取決於調用 init
時指定的操作網要)更多的資料。
註:如果拋出了任何異常,則再次使用此 Cipher 物件前需要將其重置。
output
- 用於保存結果的緩衝區outputOffset
- output
中保存結果處的偏移量
output
中存儲的位元組數
IllegalStateException
- 如果此 Cipher 處於錯誤狀態(例如,尚未初始化)
IllegalBlockSizeException
- 如果此 Cipher 為 Cipher 塊,未請求任何填充(只針對加密網要),並且由此 Cipher 處理的資料總輸入長度不是塊大小的倍數;如果此加密演算法無法處理所提供的輸入資料。
ShortBufferException
- 如果給定的輸出緩衝區太小無法保存結果
BadPaddingException
- 如果 Cipher 為解密網要,並且未請求填充(或不填充),但解密的資料沒有用適當的填充位元組進行限制public final byte[] doFinal(byte[] input) throws IllegalBlockSizeException, BadPaddingException
處理 input
緩衝區中的位元組以及在上一次 update
操作中快取記憶體的任何輸入位元組,其中應用了填充(如果請求)。結果將存儲在新緩衝區中。
結束時,此方法將此 Cipher 物件重置為上一次調用 init
初始化得到的狀態。即該物件被重置,並可用於加密或解密(具體取決於調用 init
時指定的操作網要)更多的資料。
註:如果拋出了任何異常,則再次使用此 Cipher 物件前需要將其重置。
input
- 輸入緩衝區
IllegalStateException
- 如果此 Cipher 處於錯誤狀態(例如,尚未初始化)
IllegalBlockSizeException
- 如果此 Cipher 為 Cipher 塊,未請求任何填充(只針對加密網要),並且由此 Cipher 處理的資料總輸入長度不是塊大小的倍數;如果此加密演算法無法處理所提供的輸入資料。
BadPaddingException
- 如果此 Cipher 為解密網要,並且未請求填充(或不填充),但解密的資料沒有用適當的填充位元組進行限制public final byte[] doFinal(byte[] input, int inputOffset, int inputLen) throws IllegalBlockSizeException, BadPaddingException
處理 input
緩衝區中從 inputOffset
開始(包含)的前 inputLen
個位元組,以及在上一次 update
操作過程中快取記憶體的任何輸入位元組,其中應用了填充(如果需要)。結果將存儲在新緩衝區中。
結束時,此方法將此 Cipher 物件重置為上一次調用 init
初始化得到的狀態。即該物件被重置,並可用於加密或解密(具體取決於調用 init
時指定的操作網要)更多的資料。
註:如果拋出了任何異常,則再次使用此 Cipher 物件前需要將其重置。
input
- 輸入緩衝區inputOffset
- input
中輸入起始處的偏移量inputLen
- 輸入長度
IllegalStateException
- 如果此 Cipher 處於錯誤狀態(例如,尚未初始化)
IllegalBlockSizeException
- 如果此 Cipher 為 Cipher 塊,未請求任何填充(只針對加密網要),並且由此 Cipher 處理的資料總輸入長度不是塊大小的倍數;如果此加密演算法無法處理所提供的輸入資料。
BadPaddingException
- 如果此 Cipher 為解密網要,並且未請求填充(或不填充),但解密的資料沒有用適當的填充位元組進行限制public final int doFinal(byte[] input, int inputOffset, int inputLen, byte[] output) throws ShortBufferException, IllegalBlockSizeException, BadPaddingException
處理 input
緩衝區中從 inputOffset
開始(包含)的前 inputLen
個位元組,以及在上一次 update
操作過程中快取記憶體的任何輸入位元組,其中應用了填充(如果需要)。結果將存儲在 output
緩衝區中。
如果 output
緩衝區太小無法保存該結果,則拋出 ShortBufferException
。這種情況下,使用一個稍大的緩衝區再次調用。使用 getOutputSize
確定輸出緩衝區應為多大。
結束時,此方法將此 Cipher 物件重置為上一次調用 init
初始化得到的狀態。即該物件被重置,並可用於加密或解密(具體取決於調用 init
時指定的操作網要)更多的資料。
註:如果拋出了任何異常,則再次使用此 Cipher 物件前需要將其重置。
註:此方法應該是複製安全的,這意味著 input
和 output
緩衝區可參考相同的 byte 陣列,並且在將結果複製到輸出緩衝區時,不會覆寫任何未處理的輸入資料。
input
- 輸入緩衝區inputOffset
- input
中輸入起始處的偏移量inputLen
- 輸入長度output
- 保存結果的緩衝區
output
中存儲的位元組數
IllegalStateException
- 如果此 Cipher 處於錯誤狀態(例如,尚未初始化)
IllegalBlockSizeException
- 如果此 Cipher 為 Cipher 塊,未請求任何填充(只針對加密網要),並且由此 Cipher 處理的資料總輸入長度不是塊大小的倍數;如果此加密演算法無法處理所提供的輸入資料。
ShortBufferException
- 如果給定的輸出緩衝區太小無法保存結果
BadPaddingException
- 如果 Cipher 為解密網要,並且未請求填充(或不填充),但解密的資料沒有用適當的填充位元組進行限制public final int doFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset) throws ShortBufferException, IllegalBlockSizeException, BadPaddingException
處理 input
緩衝區中從 inputOffset
開始(包含)的前 inputLen
個位元組,以及在上一次 update
操作過程中快取記憶體的任何輸入位元組,其中應用了填充(如果需要)。結果將存儲在 output
緩衝區中從 outputOffset
(包含)開始的位置。
如果 output
緩衝區太小無法保存該結果,則拋出 ShortBufferException
。這種情況下,使用一個稍大的緩衝區再次調用。使用 getOutputSize
確定輸出緩衝區應為多大。
結束時,此方法將此 Cipher 物件重置為上一次調用 init
初始化得到的狀態。即該物件被重置,並可用於加密或解密(具體取決於調用 init
時指定的操作網要)更多的資料。
註:如果拋出了任何異常,則再次使用此 Cipher 物件前需要將其重置。
註:此方法應該是複製安全的,這意味著 input
和 output
緩衝區可參考相同的 byte 陣列,並且在將結果複製到輸出緩衝區時,不會覆寫任何未處理的輸入資料。
input
- 輸入緩衝區inputOffset
- input
中輸入起始處的偏移量inputLen
- 輸入長度output
- 保存結果的緩衝區outputOffset
- output
中存儲結果處的偏移量
output
中存儲的位元組數
IllegalStateException
- 如果此 Cipher 處於錯誤狀態(例如,尚未初始化)
IllegalBlockSizeException
- 如果此 Cipher 為 Cipher 塊,未請求任何填充(只針對加密網要),並且由此 Cipher 處理的資料總輸入長度不是塊大小的倍數;如果此加密演算法無法處理所提供的輸入資料。
ShortBufferException
- 如果給定的輸出緩衝區太小無法保存結果
BadPaddingException
- 如果 Cipher 為解密網要,並且未請求填充(或不填充),但解密的資料沒有用適當的填充位元組進行限制public final int doFinal(ByteBuffer input, ByteBuffer output) throws ShortBufferException, IllegalBlockSizeException, BadPaddingException
處理從 input.position()
開始的所有 input.remaining()
個位元組。結果將存儲在輸出緩衝區中。返回時,輸入緩衝區的位置將等於其限制;其限制不變。輸出緩衝區的位置將前移 n,其中 n 為此方法返回的值;輸出緩衝區的限制不變。
如果 output.remaining()
個位元組還不夠保存該結果,則拋出 ShortBufferException
。這種情況下,使用一個稍大的緩衝區再次調用。使用 getOutputSize
確定輸出緩衝區應為多大。
結束時,此方法將此 Cipher 物件重置為上一次調用 init
初始化得到的狀態。即該物件被重置,並可用於加密或解密(具體取決於調用 init
時指定的操作網要)更多的資料。
註:如果拋出了任何異常,則再次使用此 Cipher 物件前需要將其重置。
註:此方法應該是複製安全的,這意味著 input
和 output
緩衝區可參考相同的 byte 陣列,並且在將結果複製到輸出緩衝區時,不會覆寫任何未處理的輸入資料。
input
- 輸入 ByteBufferoutput
- 輸出 ByteBuffer
output
中存儲的位元組數
IllegalStateException
- 如果此 Cipher 處於錯誤狀態(例如,尚未初始化)
IllegalArgumentException
- 如果輸入和輸出為相同的物件
ReadOnlyBufferException
- 如果輸出緩衝區為只讀
IllegalBlockSizeException
- 如果此 Cipher 為 Cipher 塊,未請求任何填充(只針對加密網要),並且由此 Cipher 處理的資料總輸入長度不是塊大小的倍數;如果此加密演算法無法處理所提供的輸入資料。
ShortBufferException
- 如果輸出緩衝區沒有足夠的空間
BadPaddingException
- 如果 Cipher 為解密網要,並且未請求填充(或不填充),但解密的資料沒有用適當的填充位元組進行限制public final byte[] wrap(Key key) throws IllegalBlockSizeException, InvalidKeyException
key
- 要包裹的密鑰。
IllegalStateException
- 如果此 Cipher 處於錯誤狀態(例如,尚未初始化)
IllegalBlockSizeException
- 如果此 Cipher 為 Cipher 塊,未請求填充,並且要包裹的密鑰的編碼長度不是塊大小的倍數。
InvalidKeyException
- 如果不能用此 Cipher 套件裝該密鑰,或者這樣做不安全(例如,將一個硬體保護的密鑰傳給只能用於軟體保護的 Cipher)。public final Key unwrap(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType) throws InvalidKeyException, NoSuchAlgorithmException
wrappedKey
- 要解套件的密鑰。wrappedKeyAlgorithm
- 與此套件裝密鑰關聯的演算法。wrappedKeyType
- 已包裹密鑰的型別。此型別必須為 SECRET_KEY
、PRIVATE_KEY
或 PUBLIC_KEY
之一。
IllegalStateException
- 如果此 Cipher 處於錯誤狀態(例如,尚未初始化)
NoSuchAlgorithmException
- 如果沒有一個已安裝的提供者能夠針對 wrappedKeyAlgorithm
創建型別為 wrappedKeyType
的密鑰。
InvalidKeyException
- 如果 wrappedKey
不表示針對 wrappedKeyAlgorithm
的型別為 wrappedKeyType
的已包裹密鑰。public static final int getMaxAllowedKeyLength(String transformation) throws NoSuchAlgorithmException
transformation
- Cipher 轉換。
NullPointerException
- 如果 transformation
為 null。
NoSuchAlgorithmException
- 如果 transformation
不是有效的轉換,即格式不為“演算法”或“演算法/網要/填充”。public static final AlgorithmParameterSpec getMaxAllowedParameterSpec(String transformation) throws NoSuchAlgorithmException
transformation
- Cipher 轉換。
NullPointerException
- 如果 transformation
為 null。
NoSuchAlgorithmException
- 如果 transformation
不是有效的轉換,即格式不為“演算法”或“演算法/網要/填充”。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。