Я реализую шифрование DES в Java с использованием BigIntegers.
Я сдвигаю двоичные ключи с помощью Java BigIntegers с помощью метода BigInteger.leftShift (int n).Ключ N (Kn) зависит от результата сдвига Kn-1.Проблема, которую я получаю, заключается в том, что я распечатываю результаты после генерации каждого ключа, а сдвиг не является ожидаемым результатом.Ключ разделен на 2 Cn и Dn (слева и справа соответственно).
Я специально пытаюсь это сделать: «Чтобы сделать сдвиг влево, переместите каждый бит на одну позицию влево, за исключением первого бита,который зацикливается до конца блока. "
В зависимости от сдвига кажется, что он прибавляет O на конце.Не знаете, как это исправить.
Результаты:
c0: 11110101010100110011000011110
d0: 11110001111001100110101010100
c1: 11110101010100110011000011d1: +111100011110011001101010101000
с2: 11110101010100110011000011110000
d2: 11110001111001100110101010100000
с3: 1111010101010011001100001111000000 * 1 023 *
d3: 1111000111100110011010101010000000
* +1026 * с4: 111101010101001100110000111100000000 * тысяча двадцать-семь* * 1 028 * d4: 111100011110011001101010101000000000
с5: 11110101010100110011000011110000000000
d5: 11110001111001100110101010100000000000
с6: 1111010101010011001100001111000000000000
d 6: 1111000111100110011010101010000000000000
с7: 111101010101001100110000111100000000000000
d7: 111100011110011001101010101000000000000000
c8: 1111010101010011001100001111000000000000000
0101 11111100000101110000000000000000
* +1046 * с9: 111101010101001100110000111100000000000000000
D9: 111100011110011001101010101000000000000000000 * +1049 *
с10: 11110101010100110011000011110000000000000000000
D10: 11110001111001100110101010100000000000000000000 * 1 053 *
C11: 1111010101010011001100001111000000000000000000000
d11: 1111000111100110011010101010000000000000000000000
c12: 111101010101001100110000111100000000000000000000000
d12: 111100011110011001101010101000000000000000000000000
c13: 11110101010100110011000011110000000000000000000000000
d13: 11110001111001100110101010100000000000000000000000000
c14: 1111010101010011001100001111000000000000000000000000000
d14: 1111000111100110011010101010000000000000000000000000000
c15: 11110101010100110011000011110000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000