gnu.crypto.cipher
Class Serpent
- Cloneable, IBlockCipher, IBlockCipherSpi
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:
- Serpent: A
Candidate Block Cipher for the Advanced Encryption Standard.
Serpent() - Trivial zero-argument constructor.
|
Iterator | blockSizes() - Returns an
Iterator over the supported block sizes.
|
Object | clone()
|
void | decrypt(byte[] in, int i, byte[] out, int o, Object K, int bs) - Decrypts exactly one block of ciphertext.
|
void | encrypt(byte[] in, int i, byte[] out, int o, Object K, int bs) - Encrypts exactly one block of plaintext.
|
Iterator | keySizes() - Returns an
Iterator over the supported key sizes.
|
Object | makeKey(byte[] kb, int blockSize) - Expands a user-supplied key material into a session key for a
designated block size.
|
boolean | selfTest() - A correctness test that consists of basic symmetric encryption /
decryption test(s) for all supported block and key sizes, as well as one
(1) variable key Known Answer Test (KAT).
|
clone , currentBlockSize , decryptBlock , defaultBlockSize , defaultKeySize , encryptBlock , init , name , reset , selfTest , testKat , testKat |
Serpent
public Serpent()
Trivial zero-argument constructor.
decrypt
public void decrypt(byte[] in,
int i,
byte[] out,
int o,
Object K,
int bs)
Decrypts exactly one block of ciphertext.
- decrypt in interface IBlockCipherSpi
in
- the ciphertext.out
- the plaintext.bs
- the block size to use.
encrypt
public void encrypt(byte[] in,
int i,
byte[] out,
int o,
Object K,
int bs)
Encrypts exactly one block of plaintext.
- encrypt in interface IBlockCipherSpi
in
- the plaintext.out
- the ciphertext.bs
- the block size to use.
makeKey
public Object makeKey(byte[] kb,
int blockSize)
throws InvalidKeyException
Expands a user-supplied key material into a session key for a
designated block size.
- makeKey in interface IBlockCipherSpi
- an Object encapsulating the session key.
selfTest
public boolean selfTest()
A correctness test that consists of basic symmetric encryption /
decryption test(s) for all supported block and key sizes, as well as one
(1) variable key Known Answer Test (KAT).
- selfTest in interface IBlockCipher
- selfTest in interface IBlockCipherSpi
- selfTest in interface BaseCipher
true
if the implementation passes simple
correctness tests. Returns false
otherwise.
Copyright © 2001, 2002, 2003
Free Software Foundation,
Inc. All Rights Reserved.