一部の学生のものについては、Java で Feistel ネットワークを実装する必要があります。
次のように、3回の手動ラウンドから始めました。
// round 1
int[] left1 = right;
int[] right1 = new int[right.length];
for(int i = 0; i < right.length; i++){
right1[i] = left[i] ^ (right[i] ^ keys[0]);
}
// round 2
int[] left2 = right1;
int[] right2 = new int[right.length];
for(int i = 0; i < right.length; i++){
right2[i] = left1[i] ^ (right1[i] ^ keys[1]);
}
// round 3
int[] left3 = right2;
int[] right3 = new int[right.length];
for(int i = 0; i < right.length; i++){
right3[i] = left2[i] ^ ( right2[i] ^ keys[2]);
}
10ラウンドしたい場合、これを10回コピーして変数を調整する必要がありますが、これを行うより良い方法はありますか? 手遅れかもしれませんが、解決策が思い浮かびません...