gnu.crypto.cipher
public class Serpent extends BaseCipher
Serpent is a 32-round substitution-permutation network block cipher, operating on 128-bit blocks and accepting keys of 128, 192, and 256 bits in length. At each round the plaintext is XORed with a 128 bit portion of the session key -- a 4224 bit key computed from the input key -- then one of eight S-boxes are applied, and finally a simple linear transformation is done. Decryption does the exact same thing in reverse order, and using the eight inverses of the S-boxes.
Serpent was designed by Ross Anderson, Eli Biham, and Lars Knudsen as a proposed cipher for the Advanced Encryption Standard.
Serpent can be sped up greatly by replacing S-box substitution with a sequence of binary operations, and the optimal implementation depends upon finding the fastest sequence of binary operations that reproduce this substitution. This implementation uses the S-boxes discovered by Dag Arne Osvik, which are optimized for the Pentium family of processors.
References:
Version: $Revision: 1.9 $
Constructor Summary | |
---|---|
Serpent() Trivial zero-argument constructor. |
Method Summary | |
---|---|
Iterator | blockSizes() |
Object | clone() |
void | decrypt(byte[] in, int i, byte[] out, int o, Object K, int bs) |
void | encrypt(byte[] in, int i, byte[] out, int o, Object K, int bs) |
Iterator | keySizes() |
Object | makeKey(byte[] kb, int blockSize) |
boolean | selfTest() |