BigIntegers を使用して、Java で DES 暗号化を実装しています。
BigInteger.leftShift(int n) メソッドを実行して、Java BigIntegers でバイナリ キーを左シフトしています。N (Kn) のキーは、Kn-1 のシフトの結果に依存します。私が得ている問題は、各キーが生成された後に結果を出力していて、シフトが期待される出力ではないことです。キーは 2 つの Cn と Dn (それぞれ左と右) に分割されます。
私は具体的にこれを試みています。
シフトによっては末尾に○を付けるようです。これを修正する方法がわかりません。
結果:
c0: 11110101010100110011000011110
d0: 11110001111001100110101010100
c1: 111101010101001100110000111100
d1: 111100011110011001101010101000
c2: 11110101010100110011000011110000
d2: 11110001111001100110101010100000
c3: 1111010101010011001100001111000000
d3: 1111000111100110011010101010000000
c4: 111101010101001100110000111100000000
d4: 111100011110011001101010101000000000
c5: 11110101010100110011000011110000000000
d5: 11110001111001100110101010100000000000
c6: 1111010101010011001100001111000000000000
d6: 1111000111100110011010101010000000000000
c7: 111101010101001100110000111100000000000000
d7: 111100011110011001101010101000000000000000
c8: 1111010101010011001100001111000000000000000
d8: 1111000111100110011010101010000000000000000
c9: 111101010101001100110000111100000000000000000
d9: 111100011110011001101010101000000000000000000
c10: 1111010101010011001100001111000000000000000000
d10: 1111000111100110011010101010000000000000000000
c11: 111101010101001100110000111100000000000000000000
d11: 111100011110011001101010101000000000000000000000
c12: 11110101010100110011000011110000000000000000000000
d12: 11110001111001100110101010100000000000000000000000
c13: 1111010101010011001100001111000000000000000000000000
d13: 1111000111100110011010101010000000000000000000000000
c14: 111101010101001100110000111100000000000000000000000000
d14: 111100011110011001101010101000000000000000000000000000
c15: 1111010101010011001100001111000000000000000000000000000
d15: 111100011110011001101010101000000000000000000000000000