
gnu.crypto.mode.package.html Maven / Gradle / Ivy
The newest version!
Provides a basic API for using block cipher Modes of Operation.
Package overview
Cipher modes operate on the next level up from the underlying block
cipher. They transform the blocks going in and out of the cipher in ways
to give them desirable properties in certain circumstances.
The following diagram shows the important classes participating in this
package:

The following example encrypts and decrypts a byte array with the AES
in CFB mode. See the gnu.crypto.pad
package for instances
where the input is not a multiple of the cipher or mode's block size.
IMode mode = ModeFactory.getInstance("CFB", "AES", 16);
Map attributes = new HashMap();
// These attributes are defined in gnu.crypto.cipher.IBlockCipher.
attributes.put(IMode.KEY_MATERIAL, key_bytes);
attributes.put(IMode.CIPHER_BLOCK_SIZE, new Integer(16));
// These attributes are defined in IMode.
attributes.put(IMode.STATE, new Integer(IMode.ENCRYPTION));
attributes.put(IMode.IV, iv_bytes);
mode.init(attributes);
int bs = mode.currentBlockSize();
for (int i = 0; i + bs < pt.length; i += bs)
{
mode.update(pt, i, ct, i);
}
mode.reset();
attributes.put(IMode.STATE, new Integer(IMode.DECRYPTION);
mode.init(attributes);
for (int i = 0; i + bs < ct.length; i += bs)
{
mode.update(ct, i, cpt, i);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy