Ich bekomme immer einen Index außerhalb der Grenzen Fehler beim Versuch, in das Array "encData1" hinzufügen und kann nicht herausfinden, warum. Es befindet sich in der Nähe des Codes, und Hilfe wäre willkommen. Ich habe versucht, einige Anweisungen hinzuzufügen, um die Größe der Arrays auszudrucken, und sie kommen alle mit 64 Zeichen heraus, aber ich bekomme einen Index außerhalb des zulässigen Bereichs bei 63, was für mich keinen Sinn ergibt.Kann dieser IndexOutOfBounds-Fehler nicht ausgegeben werden?
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};
char[] ipKey = new char[56];
for(int j = 0; j <56; j++){
ipKey[j]= k.charAt(pc1[j]);
}
char[] keyLeft = new char[28];
for(int f = 0; f < 28; f++){
keyLeft[f] = ipKey[f];
}
char[] keyRight = new char[28];
int a = 0;
for(int f = ipKey.length/2; f < 56; f++){
keyRight[a] = ipKey[f];
a++;
}
System.out.println("Key after original permutation is " + printArrayKey(ipKey) +"\n");
char[] cmbKey = new char[56];
char[] permCmbKey = new char[48];
while (i <= 16){
char tempLeft = ' ';
char tempRight = ' ';
char tempLeft1 = ' ';
char tempRight1 = ' ';
if (i != 1){
for(int r = 0; r < 28; r++){
keyLeft[r] = cmbKey[r];
}//for loop creating new left half of key.
int w = 0;
for (int r = cmbKey.length/2;r < 56; r++){
keyRight[w] = cmbKey[r];
w++;
}//for loop for creating new right half of key
}
if(i == 1 || i == 2 || i== 9 || i== 16){
perform1LeftShift(keyLeft);
perform1LeftShift(keyRight);
} // if loop for 1 left shift.
else{
perform2LeftShifts(keyLeft);
perform2LeftShifts(keyRight);
}//else loop to perform 2 left shifts.
int y = 0;
for(int p = 0; p < cmbKey.length; p++){
if(p < keyLeft.length){
cmbKey[p] = keyLeft[p];
}//if loop for left side
else if (p >= 28){
cmbKey[p] = keyRight[y];
y++;
}//else loop for right side.
}//for loop combining key halves
for(int u = 0; u < pc2.length; u++){
permCmbKey[u] = cmbKey[pc2[u]-1];
}//for for permutation of subkey
System.out.println("Key " + i + " is " + printArrayKey(permCmbKey) +"\n");
if(i == 1){
key1 = fromArrayToString(permCmbKey);
} else if(i == 2){
key2 = fromArrayToString(permCmbKey);
} else if(i == 3){
key3 = fromArrayToString(permCmbKey);
} else if(i == 4){
key4 = fromArrayToString(permCmbKey);
} else if(i == 5){
key5 = fromArrayToString(permCmbKey);
} else if(i == 6){
key6 = fromArrayToString(permCmbKey);
} else if(i == 7){
key7 = fromArrayToString(permCmbKey);
} else if(i == 8){
key8 = fromArrayToString(permCmbKey);
} else if(i == 9){
key9 = fromArrayToString(permCmbKey);
} else if(i == 10){
key10 = fromArrayToString(permCmbKey);
} else if(i == 11){
key11 = fromArrayToString(permCmbKey);
} else if(i == 12){
key12 = fromArrayToString(permCmbKey);
} else if(i == 13){
key13 = fromArrayToString(permCmbKey);
} else if(i == 14){
key14 = fromArrayToString(permCmbKey);
} else if(i == 15){
key15 = fromArrayToString(permCmbKey);
} else if(i == 16){
key16 = fromArrayToString(permCmbKey);
}
i++;
}//while loop
int x = 0;
String data = stringToBinary(message);
String data1 = "";
String data2 = "";
String data3 = "";
String data4 = "";
String data5 = "";
char [] encData1 = new char [64];
char [] encData2 = new char [64];
char [] encData3 = new char [64];
char [] encData4 = new char[64];
char [] encData5 = new char [64];
// for loop that starts DES on message.
if(data.length() > 64 && data.length() < 128){ // ****
data1 = data.substring(0, 64);
data2 = data.substring(64,data.length()-1);
while(data2.length() < 64){
data2 += '0';
}//data2 length
System.out.println("Data after preprocessing \n" + printData(data1) + "\n" + printData(data2));
char [] d1 = data1.toCharArray();
char [] d2 = data2.toCharArray();
for(int z = 0; z< 64; z++){
// char [] d1 = data1.toCharArray();
// char [] d2 = data2.toCharArray();
encData1[z] = d1[iP[z]-1];
encData2[z] = d2[iP[z]-1];
}
System.out.println("Data after initial permutation is " + printArrayKey(encData1));
}//if >64<128 ****
Sie Array IP hat 63 Elemente, es fehlt das letzte Element. Sollte sein ... '63,55,47,39,31,23,15, 7};' – user1155120
Völlig übersehen, Danke, Mann arbeitet jetzt anständig. :) – Elmangos