Supported Ciphers
ProtectToolkit-J includes support for symmetric block and stream ciphers, as well as support for the asymmetric RSA cipher. The following algorithms are available through the javax.crypto.Cipher interface:
Cipher Name | Key Length (bits) | Block Size (bits) | Cipher Modes | Padding |
---|---|---|---|---|
DES | 64 | 64 | ECB,CBC | PKCS5Padding, NoPadding |
DESede | 128,192 | 64 | ECB,CBC | PKCS5Padding, NoPadding |
AES | 128,182,256 | 64 | ECB,CBC | PKCS5 Padding, NoPadding |
IDEA | 128 | 64 | ECB,CBC | PKCS5Padding, NoPadding |
CAST128 | 8-128 | 64 | ECB,CBC | PKCS5Padding, NoPadding |
RC2 | 0-1024 | 64 | ECB,CBC | PKCS5Padding, NoPadding |
RC4 | 8-2048 | N/A | ECB | NoPadding |
PBEWithMD2AndDES(PBE Ciphers) | 64 | 64 | N/A | N/A |
PBEWithMD5AndDES(PBE Ciphers) | 64 | 64 | N/A | N/A |
PBEWithMD5AndCAST(PBE Ciphers) | 128 | 128 | N/A | N/A |
PBEWithSHA1AndCAST(PBE Ciphers) | 128 | 128 | N/A | N/A |
PBEWithSHA1AndTripleDES(PBE Ciphers) | 128 | 128 | N/A | N/A |
RSA | 512-4096 | variable | ECB | PCKS1Padding, NoPadding, OAEP, OAEPPadding |
Here, the Cipher name is the name of the Cipher as known to the JCE. To request a particular algorithm, pass this name to the Cipher.getInstance() method. Some algorithms support different key lengths, and the supported key lengths are listed in the table above. The block size is the size of data that is processed by the cipher. During encryption, the amount of data processed must be a multiple of this size, unless padding is employed (see below), and the encrypted output will therefore be a multiple of this size.
Electronic Codebook Mode (ECB) and Cipher Block Chaining (CBC) are defined in FIPS PUB 81: DES Modes of Operation. All ciphers will default to ECB mode.
PKCS#5 padding is defined in PKCS#5, and is the standard padding applied to block ciphers with a block size of 64 bits. DES, DESede, IDEA, CAST128 and RC2 all default to "NoPadding". When PKCS5Padding is employed with a block cipher, the input data for encryption can be any length, and will be padded to the appropriate length before encryption.
PKCS#1 padding is defined in PKCS#1, and is the standard padding mechanism for the RSA cipher. When this padding mechanism is used, PKCS#1 padding will be performed on each block encrypted. For public-key encryption PKCS#1 type 1 blocks will be created, and for private-key encryption type 2 blocks will be created. When “NoPadding” is requested, no PKCS#1 packing is applied to the data and the processing is performed as per the X.509 (raw) RSA specification.
Cipher Algorithm Parameters
Currently, ProtectToolkit-J does not support algorithm parameters.
Calls to Cipher.getParameters() will always return null
. Neither does the provider include any java.security.AlgorithmParameters classes.