|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--javax.crypto.KeyGeneratorSpi | +--iaik.security.cipher.VarLengthKeyGenerator | +--iaik.security.cipher.DESKeyGenerator
This class provides the functionality of a DES key generator. A key generator is used for creating secret keys for symmetric algorithms.
An application uses
for creating a KeyGenerator object for the DES algorithm. For actually generating the requested secret DES key from the KeyGenerator object just created, an application calls theKeyGenerator des_key_gen = KeyGenerator.getInstance("DES");
generateKey
method after having initialized
the generator with some random seed or relied on the default system-provided
source of randomness:
SecretKey des_key = des_key_gen.generateKey();
Due to the way, the DES algorithm generates sub-keys for the several DES rounds, some initial keys may be classified as weak or semi-weak keys reducing the security of the DES cipher (see "Applied Cryptography", Bruce Schneier, ISBN 0-471-59756-2). This KeyGenerator class ensures to generate a strong DES key by repeating the key generation process as long as comparison with all the known weak and semi-weak DES keys will show that the just created key is not a strong one.
KeyGenerator
,
KeyGeneratorSpi
,
SecretKey
,
SecretKey
,
DES
Constructor Summary | |
DESKeyGenerator()
|
Method Summary | |
static void |
adjustParity(byte[] key,
int offset)
Adjusts the parity-bits of a DES key, supplied in a byte array beginning at the given offset. |
static boolean |
checkParity(byte[] key,
int offset,
boolean odd)
Checks if the given DES key, supplied in a byte array beginning at the given offset, is parity adjusted. |
protected SecretKey |
engineGenerateKey()
Generates a DES key. |
protected void |
engineInit(AlgorithmParameterSpec params,
SecureRandom random)
Initializes this key generator. |
protected void |
engineInit(int strength,
SecureRandom random)
Initializes this key generator for the given strength with the given random seed. |
protected void |
engineInit(SecureRandom random)
Initializes this key generator with the given random seed. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public DESKeyGenerator()
Method Detail |
protected SecretKey engineGenerateKey()
For ensuring to create a strong DES key, the key generation process is repeated as long as comparison with all the known weak and semi-weak DES keys will show that the just created key is not a strong DES key.
engineGenerateKey
in class iaik.security.cipher.VarLengthKeyGenerator
SecretKey
public static void adjustParity(byte[] key, int offset)
key
- the byte array holding the DES keyoffset
- the offset indicating where the key starts within the given
byte arraypublic static boolean checkParity(byte[] key, int offset, boolean odd)
key
- the byte array holding the DES keyoffset
- the offset indicating where the key starts within the given
byte arrayodd
- whether to check for odd or even paritytrue
if checking for odd parity and the key is odd parity adjusted;
true
if checking for even parity and the key is even parity adjusted;
false
in any other case (note that if this method returns false when
checking for odd (even) parity, this does not nessesarily mean
that the key is even (odd) parity adjustedprotected void engineInit(AlgorithmParameterSpec params, SecureRandom random) throws InvalidAlgorithmParameterException
engineInit(random)
.engineInit
in class KeyGeneratorSpi
InvalidAlgorithmParameterException
- if parameters are passedprotected void engineInit(int strength, SecureRandom random)
engineInit
in class KeyGeneratorSpi
strength
- the strength of the key to be createdrandom
- the random seedprotected void engineInit(SecureRandom random)
engineInit
in class KeyGeneratorSpi
random
- the random seed for this generator
|
This Javadoc may contain text parts from Internet Standard specifications (RFC 2459, 3280, 3039, 2560, 1521, 821, 822, 2253, 1319, 1321, ,2630, 2631, 2268, 3058, 2984, 2104, 2144, 2040, 2311, 2279, see copyright note) and RSA Data Security Public-Key Cryptography Standards (PKCS#1,3,5,7,8,9,10,12, see copyright note). | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |