# Package javax.crypto

package javax.crypto
Provides the classes and interfaces for cryptographic operations. The cryptographic operations defined in this package include encryption, key generation and key agreement, and Message Authentication Code (MAC) generation.

Support for encryption includes symmetric, asymmetric, block, and stream ciphers. This package also supports secure streams and sealed objects.

Many of the classes provided in this package are provider-based. The class itself defines a programming interface to which applications may write. The implementations themselves may then be written by independent third-party vendors and plugged in seamlessly as needed. Therefore, application developers may take advantage of any number of provider-based implementations without having to add or rewrite code.

- Java Security Standard Algorithm Names Specification

## Related Documentation

For further documentation, please see:

- Java Cryptography Architecture (JCA) Reference Guide
- How to Implement a Provider in the Java Cryptography Architecture

Since:
  1.4
External Specifications
  - Java Security Standard Algorithm Names

- Related Packages
  Package
  Description
  javax.crypto.interfaces
  Provides interfaces for Diffie-Hellman keys as defined in RSA Laboratories' PKCS #3.
  javax.crypto.spec
  Provides classes and interfaces for key specifications and algorithm parameter specifications.
- Class
  Description
  AEADBadTagException
  This exception is thrown when a `Cipher` operating in an AEAD mode (such as GCM/CCM) is unable to verify the supplied authentication tag.
  BadPaddingException
  This exception is thrown when a particular padding mechanism is expected for the input data but the data is not padded properly.
  Cipher
  This class provides the functionality of a cryptographic cipher for encryption and decryption.
  CipherInputStream
  A `CipherInputStream` is composed of an `InputStream` and a `Cipher` object so that read() methods return data that are read in from the underlying `InputStream` but have been additionally processed by the `Cipher` object.
  CipherOutputStream
  A `CipherOutputStream` is composed of an `OutputStream` and a `Cipher` object so that write() methods first process the data before writing them out to the underlying `OutputStream`.
  CipherSpi
  This class defines the Service Provider Interface (SPI) for the `Cipher` class.
  DecapsulateException
  An exception that is thrown by the `KEM.Decapsulator.decapsulate(byte[])` method to denote an error during decapsulation.
  EncryptedPrivateKeyInfo
  This class implements the `EncryptedPrivateKeyInfo` type as defined in PKCS #8.
  ExemptionMechanism
  This class provides the functionality of an exemption mechanism, examples of which are key recovery, key weakening, and key escrow.
  ExemptionMechanismException
  This is the generic ExemptionMechanism exception.
  ExemptionMechanismSpi
  This class defines the Service Provider Interface (SPI) for the `ExemptionMechanism` class.
  IllegalBlockSizeException
  This exception is thrown when the length of data provided to a block cipher is incorrect, i.e., does not match the block size of the cipher.
  KDFPREVIEW
  Preview.
  This class provides the functionality of a Key Derivation Function (KDF), which is a cryptographic algorithm for deriving additional keys from input keying material (IKM) and (optionally) other data.
  KDFParametersPREVIEW
  Preview.
  A specification of Key Derivation Function (`KDF`PREVIEW) parameters.
  KDFSpiPREVIEW
  Preview.
  This class defines the Service Provider Interface (SPI) for the Key Derivation Function (`KDF`PREVIEW) class.
  KEM
  This class provides the functionality of a Key Encapsulation Mechanism (KEM).
  KEM.Decapsulator
  A decapsulator, generated by `KEM.newDecapsulator(java.security.PrivateKey)` on the KEM receiver side.
  KEM.Encapsulated
  This class specifies the return value of the encapsulate method of a Key Encapsulation Mechanism (KEM), which includes the shared secret (as a `SecretKey`), the key encapsulation message, and optional parameters.
  KEM.Encapsulator
  An encapsulator, generated by `KEM.newEncapsulator(java.security.PublicKey)` on the KEM sender side.
  KEMSpi
  This class defines the Service Provider Interface (SPI) for the `KEM` class.
  KEMSpi.DecapsulatorSpi
  The KEM decapsulator implementation, generated by `KEMSpi.engineNewDecapsulator(java.security.PrivateKey, java.security.spec.AlgorithmParameterSpec)` on the KEM receiver side.
  KEMSpi.EncapsulatorSpi
  The KEM encapsulator implementation, generated by `KEMSpi.engineNewEncapsulator(java.security.PublicKey, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom)` on the KEM sender side.
  KeyAgreement
  This class provides the functionality of a key agreement (or key exchange) protocol.
  KeyAgreementSpi
  This class defines the Service Provider Interface (SPI) for the `KeyAgreement` class.
  KeyGenerator
  This class provides the functionality of a secret (symmetric) key generator.
  KeyGeneratorSpi
  This class defines the Service Provider Interface (SPI) for the `KeyGenerator` class.
  Mac
  This class provides the functionality of a "Message Authentication Code" (MAC) algorithm.
  MacSpi
  This class defines the Service Provider Interface (SPI) for the `Mac` class.
  NoSuchPaddingException
  This exception is thrown when a particular padding mechanism is requested but is not available in the environment.
  NullCipher
  The `NullCipher` class is a class that provides an "identity cipher" -- one that does not transform the plain text.
  SealedObject
  This class enables a programmer to create an object and protect its confidentiality with a cryptographic algorithm.
  SecretKey
  A secret (symmetric) key.
  SecretKeyFactory
  This class represents a factory for secret keys.
  SecretKeyFactorySpi
  This class defines the Service Provider Interface (SPI) for the `SecretKeyFactory` class.
  ShortBufferException
  This exception is thrown when an output buffer provided by the user is too short to hold the operation result.