所有类


javax.crypto
类 Cipher

java.lang.Object
  继承者 javax.crypto.Cipher
直接已知子类:
NullCipher

public class Cipher
   
   
   
   
   
extends Object

此类提供了针对加密和解密的密码 cipher 功能。它构成了 Java Cryptographic Extension (JCE) 框架的核心。

为创建 Cipher 对象,应用程序调用 Cipher 的 getInstance 方法并将请求的转换 名称传递给它。作为可选项,也可以指定提供程序的名称。

转换 是描述为产生某种输出而在给定的输入上执行的操作(或一组操作)的字符串。转换始终包括加密算法的名称(例如,DES),后面可能跟有一个反馈模式和填充方案。

转换具有下面的形式:

  • 算法/模式/填充”或

  • 算法

(后一种情况下,使用此模式和填充方案的特定于提供程序的默认值)。例如,以下是有效的转换:

     Cipher c = Cipher.getInstance("DES/CBC/PKCS5Padding");
 

在流 cipher 模式下(例如,DESCFBOFB 模式)请求块 cipher 时,用户可选择指定一次处理的位数,方法是将此数追加到模式名称中,如在 "DES/CFB8/NoPadding" 和 "DES/OFB32/PKCS5Padding" 转换中所示。如果未指定该数,则将使用特定于提供程序的默认值。(例如,"SunJCE" 提供程序使用默认的 64 位)。

从以下版本开始:
1.4
另请参见:
KeyGenerator, SecretKey

字段摘要
static intDECRYPT_MODE
          用于将 cipher 初始化为解密模式的常量。
static intENCRYPT_MODE
          用于将 cipher 初始化为加密模式的常量。
static intPRIVATE_KEY
          用于指示要打开的密钥为“私钥”的常量。
static intPUBLIC_KEY
          用于指示要打开的密钥为“公钥”的常量。
static intSECRET_KEY
          用于指示要打开的密钥为“秘密密钥”的常量。
static intUNWRAP_MODE
          用于将 cipher 初始化为密钥打开模式的常量。
static intWRAP_MODE
          用于将 cipher 初始化为密钥包装模式的常量。
 
构造方法摘要
protected Cipher(CipherSpi cipherSpi, Provider provider, String transformation)
          创建 Cipher 对象。
 
方法摘要
 byte[]doFinal()
          结束多部分加密或解密操作(取决于 cipher 的初始化方式)。
 byte[]doFinal(byte[] input)
          按单部分操作加密或解密数据,或者结束一个多部分操作。
 intdoFinal(byte[] output, int outputOffset)
          结束多部分加密或解密操作(取决于 cipher 的初始化方式)。
 byte[]doFinal(byte[] input, int inputOffset, int inputLen)
          按单部分操作加密或解密数据,或者结束一个多部分操作。
 intdoFinal(byte[] input, int inputOffset, int inputLen, byte[] output)
          按单部分操作加密或解密数据,或者结束一个多部分操作。
 intdoFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
          按单部分操作加密或解密数据,或者结束一个多部分操作。
 intdoFinal(ByteBuffer input, ByteBuffer output)
          按单部分操作加密或解密数据,或者结束一个多部分操作。
 StringgetAlgorithm()
          返回此 Cipher 对象的算法名称。
 intgetBlockSize()
          返回块的大小(以字节为单位)。
 ExemptionMechanismgetExemptionMechanism()
          返回此 cipher 使用的豁免机制对象。
static CiphergetInstance(String transformation)
          生成一个实现指定转换的 Cipher 对象。
static CiphergetInstance(String transformation, Provider provider)
          创建一个实现指定转换的 Cipher 对象,该转换由指定的提供程序提供。
static CiphergetInstance(String transformation, String provider)
          创建一个实现指定转换的 Cipher 对象,该转换由指定的提供程序提供。
 byte[]getIV()
          返回新缓冲区中的初始化向量 (IV)。
static intgetMaxAllowedKeyLength(String transformation)
          根据所安装的 JCE 仲裁策略文件返回指定转换的最大密钥长度。
static AlgorithmParameterSpecgetMaxAllowedParameterSpec(String transformation)
          根据仲裁策略文件返回包含最大 cipher 参数值的 AlgorithmParameterSpec 对象。
 intgetOutputSize(int inputLen)
          在给定了输入长度 inputLen(以字节为单位)的情况下,返回用于保存下一个 updatedoFinal 操作结果所需的输出缓冲区长度的字节数。
 AlgorithmParametersgetParameters()
          返回此 cipher 使用的参数。
 ProvidergetProvider()
          返回此 Cipher 对象的提供程序。
 voidinit(int opmode, Certificate certificate)
          用来自给定证书的公钥初始化此 cipher。
 voidinit(int opmode, Certificate certificate, SecureRandom random)
          用来自给定证书的公钥和随机源初始化此 cipher。
 voidinit(int opmode, Key key)
          用密钥初始化此 cipher。
 voidinit(int opmode, Key key, AlgorithmParameters params)
          用密钥和一组算法参数初始化此 cipher。
 voidinit(int opmode, Key key, AlgorithmParameterSpec params)
          用密钥和一组算法参数初始化此 cipher。
 voidinit(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random)
          用一个密钥、一组算法参数和一个随机源初始化此 cipher。
 voidinit(int opmode, Key key, AlgorithmParameters params, SecureRandom random)
          用一个密钥、一组算法参数和一个随机源初始化此 cipher。
 voidinit(int opmode, Key key, SecureRandom random)
          用密钥和随机源初始化此 cipher。
 Keyunwrap(byte[] wrappedKey, String wrappedKeyAlgorithm, int wrappedKeyType)
          打开一个以前包装的密钥。
 byte[]update(byte[] input)
          继续多部分加密或解密操作(取决于此 cipher 的初始化方式),以处理其他数据部分。
 byte[]update(byte[] input, int inputOffset, int inputLen)
          继续多部分加密或解密操作(取决于此 cipher 的初始化方式),以处理其他数据部分。
 intupdate(byte[] input, int inputOffset, int inputLen, byte[] output)
          继续多部分加密或解密操作(取决于此 cipher 的初始化方式),以处理其他数据部分。
 intupdate(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
          继续多部分加密或解密操作(取决于此 cipher 的初始化方式),以处理其他数据部分。
 intupdate(ByteBuffer input, ByteBuffer output)
          继续多部分加密或解密操作(取决于此 cipher 的初始化方式),以处理其他数据部分。
 byte[]wrap(Key key)
          将密钥包装。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

ENCRYPT_MODE

public static final int ENCRYPT_MODE
用于将 cipher 初始化为加密模式的常量。

另请参见:
常量字段值

DECRYPT_MODE

public static final int DECRYPT_MODE
用于将 cipher 初始化为解密模式的常量。

另请参见:
常量字段值

WRAP_MODE

public static final int WRAP_MODE
用于将 cipher 初始化为密钥包装模式的常量。

另请参见:
常量字段值

UNWRAP_MODE

public static final int UNWRAP_MODE
用于将 cipher 初始化为密钥打开模式的常量。

另请参见:
常量字段值

PUBLIC_KEY

public static final int PUBLIC_KEY
用于指示要打开的密钥为“公钥”的常量。

另请参见:
常量字段值

PRIVATE_KEY

public static final int PRIVATE_KEY
用于指示要打开的密钥为“私钥”的常量。

另请参见:
常量字段值

SECRET_KEY

public static final int SECRET_KEY
用于指示要打开的密钥为“秘密密钥”的常量。

另请参见:
常量字段值
构造方法详细信息

Cipher

protected Cipher(CipherSpi cipherSpi,
                 Provider provider,
                 String transformation)
创建 Cipher 对象。

参数:
cipherSpi - 代理
provider - 提供程序
transformation - 转换
方法详细信息

getInstance

public static final Cipher getInstance(String transformation)
                                throws NoSuchAlgorithmException,
                                       NoSuchPaddingException
生成一个实现指定转换的 Cipher 对象。

如果默认的提供程序包提供了请求的转换实现,则会返回包含该实现的一个 Cipher 实例。如果默认的提供程序包中没有可用的转换,则将搜索其他的提供程序包。

参数:
transformation - 转换的名称,例如 DES/CBC/PKCS5Padding。有关标准转换名称的信息,请参见 Java Cryptography Extension Reference Guide 的附录 A。
返回:
实现所请求转换的 cipher
抛出:
NoSuchAlgorithmException - 如果 transformation 为 null、空、无效格式,或当前安装的提供程序中没有可用的转换。
NoSuchPaddingException - 如果 transformation 包含的填充方案不可用。