public class DESKeyGenerator extends RawKeyGenerator
DES keys have a fixed length of 8 bytes, with a parity bit as the LSB of each byte (i.e. there are 2^56 possible keys).
Copyright © 1997
Systemics Ltd on behalf of the
Cryptix Development Team.
All rights reserved.
$Revision: 1.2 $
Modifier | Constructor and Description |
---|---|
|
DESKeyGenerator() |
protected |
DESKeyGenerator(java.lang.String algorithm,
int seedlength)
Constructor for use by subclasses that need to specify a different seed
length (e.g.
|
Modifier and Type | Method and Description |
---|---|
protected byte[] |
engineGenerateKey(byte[] seed)
This method allows subclasses to modify the bytes that will be
used to generate a key.
|
protected boolean |
isWeak(byte[] key)
Returns true iff the first 8 bytes of key represent a weak
or semi-weak single DES key.
|
protected boolean |
isWeak(byte[] key,
int offset)
Returns true iff the bytes at key[offset..offset+7] represent a weak
or semi-weak single DES key.
|
protected void |
setParity(byte[] array)
Sets parity bits for the given input array.
|
generateKey, generateKey, getDefaultKeyLength, getMaximumKeyLength, getMinimumKeyLength, initialize, initialize, isValidKeyLength, isWeakAllowed, setWeakAllowed
clone, engineGetParameter, engineSetParameter, getAlgorithm, getAlgorithms, getAlgorithms, getInstance, getInstance, getParameter, setParameter, toString
public DESKeyGenerator()
protected DESKeyGenerator(java.lang.String algorithm, int seedlength)
protected byte[] engineGenerateKey(byte[] seed) throws WeakKeyException, java.security.InvalidKeyException
RawKeyGenerator
The seed array contains either randomly generated bytes, or an encoded form of the key. Subclasses should throw a WeakKeyException if isWeakAllowed() is false, and a weak key would have been generated.
The default implementation is as follows: If weak keys are not
allowed, and the seed array represents a weak key (i.e.
!isWeakAllowed() && isWeak(seed)
), throw a
WeakKeyException. Otherwise, just return the seed array. This
is sufficient if the key does not have any special form (for
example, parity bits that should be set correctly).
The seed array can be modified if that is convenient.
engineGenerateKey
in class RawKeyGenerator
seed
- the seed bytes for this key.WeakKeyException
java.security.InvalidKeyException
protected void setParity(byte[] array)
protected boolean isWeak(byte[] key)
isWeak
in class RawKeyGenerator
protected boolean isWeak(byte[] key, int offset)
(This checks for the 16 weak and semi-weak keys as given by Schneier, Applied Cryptography 2nd ed., tables 12.11 and 12.12. It does not check for the possibly-weak keys in table 12.13.)