对于一些学生的东西,我需要用 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 次并调整变量,有没有更好的方法来做到这一点?也许为时已晚,但我想不出解决方案...