private static byte[] combineCD(byte[] C, byte[] D) {
        byte[] CD = new byte[7];
        // get 28 first bits from C
        for(int bit = 0; bit < 28; bit++) {
            ByteHelper.setBit(CD, bit, ByteHelper.getBitInt(C, bit));
        }
        // get 28 next bits from D
        for(int bit = 28; bit < 56; bit++) {
            ByteHelper.setBit(CD, bit, ByteHelper.getBitInt(D, bit - 28));
        }
        return CD;
    }