I have a 56 bit binary string that i want to use as the secret key for DES encryption.
I found the following code at the JCA docs website
byte[] desKeyData = { (byte)0x01, (byte)0x02, (byte)0x03,
(byte)0x04, (byte)0x05, (byte)0x06, (byte)0x07, (byte)0x08 };
DESKeySpec desKeySpec = new DESKeySpec(desKeyData);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
However this uses 8 bytes for the key (instead of 7). It is not clear if the desKeyData[0] corresponds to the least significant byte or the most significant one. Also, is it possible to use the 56 bit string directly to generate the byte array that can be used for this purpose ?
From Wikipedia:
So, the least significant bits (i.e. 0th bits) are not used for key construction, they can be used for checking parity by
DESKeySpec.isParityAdjusted()
.EDIT: Simple test showing that the least significant bits are ignored: