|
JavaTM 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 Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。