DESKeySpecpublic class DESKeySpec extends Object implements KeySpecThe key specification for a DES key. |
Fields Summary |
---|
public static final int | DES_KEY_LENThe length of a DES key in bytes. | private final byte[] | key | private static final byte[] | SEMIWEAKS |
Constructors Summary |
---|
public DESKeySpec(byte[] key)Creates a new DESKeySpec from the first 8 bytes of the
specified key data.
this(key, 0);
| public DESKeySpec(byte[] key, int offset)Creates a new DESKeySpec from the first 8 bytes of the
specified key data starting at offset .
if (key == null) {
throw new NullPointerException(Messages.getString("crypto.2F")); //$NON-NLS-1$
}
if (key.length - offset < DES_KEY_LEN) {
throw new InvalidKeyException(
Messages.getString("crypto.40")); //$NON-NLS-1$
}
this.key = new byte[DES_KEY_LEN];
System.arraycopy(key, offset, this.key, 0, DES_KEY_LEN);
|
Methods Summary |
---|
public byte[] | getKey()Returns a copy of the key.
byte[] result = new byte[DES_KEY_LEN];
System.arraycopy(this.key, 0, result, 0, DES_KEY_LEN);
return result;
| public static boolean | isParityAdjusted(byte[] key, int offset)Returns whether the specified key data starting at offset is
parity-adjusted.
if (key == null) {
throw new InvalidKeyException(Messages.getString("crypto.2F")); //$NON-NLS-1$
}
if (key.length - offset < DES_KEY_LEN) {
throw new InvalidKeyException(
Messages.getString("crypto.40")); //$NON-NLS-1$
}
int byteKey = 0;
for (int i = offset; i < DES_KEY_LEN; i++) {
byteKey = key[i];
byteKey ^= byteKey >> 1;
byteKey ^= byteKey >> 2;
byteKey ^= byteKey >> 4;
if ((byteKey & 1) == 0) {
return false;
}
}
return true;
| public static boolean | isWeak(byte[] key, int offset)Returns whether the specified key data starting at offset is
weak or semi-weak.
if (key == null) {
throw new InvalidKeyException(Messages.getString("crypto.2F")); //$NON-NLS-1$
}
if (key.length - offset < DES_KEY_LEN) {
throw new InvalidKeyException(
Messages.getString("crypto.40")); //$NON-NLS-1$
}
I:
for (int i=0; i<SEMIWEAKS.length; i++) {
for (int j=0; j<DES_KEY_LEN; j++) {
if (SEMIWEAKS[i][j] != key[offset+j]) {
continue I;
}
}
return true;
}
return false;
|
|