cryptix.provider.key

Class DESKeyGenerator

public class DESKeyGenerator extends RawKeyGenerator

A key generator for (single) DES.

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 $

Since: Cryptix 2.2.0a, 2.2.2

Author: David Hopwood Raif Naffah

Constructor Summary
DESKeyGenerator()
protected DESKeyGenerator(String algorithm, int seedlength)
Constructor for use by subclasses that need to specify a different seed length (e.g. for Triple DES).
Method Summary
protected byte[]engineGenerateKey(byte[] seed)
protected booleanisWeak(byte[] key)
Returns true iff the first 8 bytes of key represent a weak or semi-weak single DES key.
protected booleanisWeak(byte[] key, int offset)
Returns true iff the bytes at key[offset..offset+7] represent a weak or semi-weak single DES key.
protected voidsetParity(byte[] array)
Sets parity bits for the given input array.

Constructor Detail

DESKeyGenerator

public DESKeyGenerator()

DESKeyGenerator

protected DESKeyGenerator(String algorithm, int seedlength)
Constructor for use by subclasses that need to specify a different seed length (e.g. for Triple DES).

Method Detail

engineGenerateKey

protected byte[] engineGenerateKey(byte[] seed)

isWeak

protected boolean isWeak(byte[] key)
Returns true iff the first 8 bytes of key represent a weak or semi-weak single DES key.

isWeak

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. It can be called either before or after setting parity bits.

(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.)

setParity

protected void setParity(byte[] array)
Sets parity bits for the given input array. The least significant bit of each byte is changed to ensure that the byte has odd parity.