- 啦啦啦,我又来了,把进制问题解决后,其他就好搞了,刚刚把初始置换部分单独实现出来了!!!
一个立志成为一个java工程师的小菜鸡进化史。
import java.util.Scanner;
public class helloword {
public static void main(String[] args) {
int[] mingwen = new int[64];
Scanner in = new Scanner(System.in);
System.out.print("请输入16进制的明文:");
String kk = new String();
kk = in.next();
int len = kk.length();
while (len != 16) {
System.out.print("请重新输入16进制的明文:");
kk = new String();
kk = in.next();
len = kk.length();
}
char[] kk1 = kk.toCharArray();
int j = 0;
for (int i = 0; i < 16; i++) {
int a;
if (kk1[i] >= '0' && kk1[i] <= '9')
a = kk1[i] - '0';
else
a = kk1[i] - 'a' + 10;
int n[] = new int[4];
int f = 0;
while (a != 0) {
n[f] = a % 2;
a = a / 2;
f++;
}
mingwen[j * 4] = n[3];
mingwen[j * 4 + 1] = n[2];
mingwen[j * 4 + 2] = n[1];
mingwen[j * 4 + 3] = n[0];
j++;
}
System.out.print("二进制为:");
for (int i = 0; i < 64; i++) {
if (i % 64 == 0) System.out.println();
System.out.print(mingwen[i]);
}
int[] 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};
int[] mingwen_1 = new int[64];
for (int i = 0; i < 64; i++) {
mingwen_1[i] = mingwen[IP[i] - 1];
}
System.out.println();
System.out.print("初始置换后的结果:");
for (int i = 0; i < 64; i++) {
if (i % 64 == 0) System.out.println();
System.out.print(mingwen_1[i]);
}
}
}
欢迎各位大神进行指教!!!若有不足可在评论区留言讨论。



