Я реализую DES также в java, и я сначала смущен тем, как получить обычный текст в его соответствующие 64-битные двоичные блоки, и они переставляют его с помощью таблиц перестановок.Как выполнить побитовую перестановку в java
например. Я хочу получить 000001010011100101110111000001000100100011010001010110 отABCDEF, как бы я это сделал?
После этого я хочу переставить 000001010011100101110111000001000100100011010001010110 используя таблицу
private static final byte[] IP = {
58, 50, 42, 34, 26, 18, 10, 2,
60, 52, 44, 36, 28, 20, 12, 4,
62, 54, 46, 38, 30, 22, 14, 6,
64, 56, 48, 40, 32, 24, 16, 8,
57, 49, 41, 33, 25, 17, 9, 1,
59, 51, 43, 35, 27, 19, 11, 3,
61, 53, 45, 37, 29, 21, 13, 5,
63, 55, 47, 39, 31, 23, 15, 7
};
Первая часть проста, вы просто определяете массив байтов, например. 'byte [] data = {(byte) 0x01, ..., (byte) 0xEF};'. После этого биты находятся в массиве байтов. Поскольку функции не накладываются непосредственно на биты индивидуально (для чего-то слегка оптимизированного), нет смысла идти дальше этого. Я согласен, как переставить, слишком широкий вопрос. Если вы не уверены, просмотрите существующие реализации. Обратите внимание, что Java и Bouncy являются открытыми. –
Я отозвал закрытое голосование, чтобы убедиться, что ответ выживет. –