?? subkey.java
字號:
/*
* Created on 2006-11-14
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
/**
* @author Administrator
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class SubKey {
private String inKey;
private StringBuffer keyBuffer;
private byte[] key1=new byte[64];
private byte[] key2=new byte[56];
protected byte[] key3=new byte[48];
private static byte[] shift={ 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 };
protected byte[] k1=new byte[48];
protected byte[] k2=new byte[48];
protected byte[] k3=new byte[48];
protected byte[] k4=new byte[48];
protected byte[] k5=new byte[48];
protected byte[] k6=new byte[48];
protected byte[] k7=new byte[48];
protected byte[] k8=new byte[48];
protected byte[] k9=new byte[48];
protected byte[] k10=new byte[48];
protected byte[] k11=new byte[48];
protected byte[] k12=new byte[48];
protected byte[] k13=new byte[48];
protected byte[] k14=new byte[48];
protected byte[] k15=new byte[48];
protected byte[] k16=new byte[48];
public SubKey(String inputKey) {
byte X;
this.inKey=inputKey;
int length=inKey.length();
keyBuffer=new StringBuffer(inKey);
if (length<8){
for (int i = 1; i<=8-length; i++)
keyBuffer.append("$");
}
inKey = keyBuffer.toString();
for (int i = 0; i<8; i++) {
X=(byte)(inKey.charAt(i));
key1[8*i] = (byte)((X/128)%2);
key1[8*i+1] = (byte)((X/64)%2);
key1[8*i+2] = (byte)((X/32)%2);
key1[8*i+3] = (byte)((X/16)%2);
key1[8*i+4] = (byte)((X/8)%2);
key1[8*i+5] = (byte)((X/4)%2);
key1[8*i+6] = (byte)((X/2)%2);
key1[8*i+7] = (byte)(X%2);
}
key2 [ 0] = key1[56];
key2[ 1] = key1[48];
key2[ 2] = key1[40];
key2[ 3] = key1[32];
key2[ 4] = key1[24];
key2[ 5] = key1[16];
key2[ 6] = key1[ 8];
key2[ 7] = key1[ 0];
key2[ 8] = key1[57];
key2[ 9] = key1[49];
key2[10] = key1[41];
key2[11] = key1[33];
key2[12] = key1[25];
key2[13] = key1[17];
key2[14] = key1[ 9];
key2[15] = key1[ 1];
key2[16] = key1[58];
key2[17] = key1[50];
key2[18] = key1[42];
key2[19] = key1[34];
key2[20] = key1[26];
key2[21] = key1[18];
key2[22] = key1[10];
key2[23] = key1[ 2];
key2[24] = key1[59];
key2[25] = key1[51];
key2[26] = key1[43];
key2[27] = key1[35];
key2[28] = key1[62];
key2[29] = key1[54];
key2[30] = key1[46];
key2[31] = key1[38];
key2[32] = key1[30];
key2[33] = key1[22];
key2[34] = key1[14];
key2[35] = key1[ 6];
key2[36] = key1[61];
key2[37] = key1[53];
key2[38] = key1[45];
key2[39] = key1[37];
key2[40] = key1[29];
key2[41] = key1[21];
key2[42] = key1[13];
key2[43] = key1[ 5];
key2[44] = key1[60];
key2[45] = key1[52];
key2[46] = key1[44];
key2[47] = key1[36];
key2[48] = key1[28];
key2[49] = key1[20];
key2[50] = key1[12];
key2[51] = key1[ 4];
key2[52] = key1[27];
key2[53] = key1[19];
key2[54] = key1[11];
key2[55] = key1[ 3];
byte numberOfShift;
byte temp1,temp2;
for (int iter = 0; iter<16; iter++) {
numberOfShift = shift[iter];
for (int i = 0; i < (int) numberOfShift; i++) {
temp1 = key2[0];
temp2 = key2[28];
for (int j = 0; j < 27; j++) {
key2[j ] = key2[j+1];
key2[j+28] = key2[j+29];
}
key2[27] = temp1;
key2[55] = temp2;
}
key3[ 0] = key2[13];
key3[ 1] = key2[16];
key3[ 2] = key2[10];
key3[ 3] = key2[23];
key3[ 4] = key2[ 0];
key3[ 5] = key2[ 4];
key3[ 6] = key2[ 2];
key3[ 7] = key2[27];
key3[ 8] = key2[14];
key3[ 9] = key2[ 5];
key3[10] = key2[20];
key3[11] = key2[ 9];
key3[12] = key2[22];
key3[13] = key2[18];
key3[14] = key2[11];
key3[15] = key2[ 3];
key3[16] = key2[25];
key3[17] = key2[ 7];
key3[18] = key2[15];
key3[19] = key2[ 6];
key3[20] = key2[26];
key3[21] = key2[19];
key3[22] = key2[12];
key3[23] = key2[ 1];
key3[24] = key2[40];
key3[25] = key2[51];
key3[26] = key2[30];
key3[27] = key2[36];
key3[28] = key2[46];
key3[29] = key2[54];
key3[30] = key2[29];
key3[31] = key2[39];
key3[32] = key2[50];
key3[33] = key2[44];
key3[34] = key2[32];
key3[35] = key2[47];
key3[36] = key2[43];
key3[37] = key2[48];
key3[38] = key2[38];
key3[39] = key2[55];
key3[40] = key2[33];
key3[41] = key2[52];
key3[42] = key2[45];
key3[43] = key2[41];
key3[44] = key2[49];
key3[45] = key2[35];
key3[46] = key2[28];
key3[47] = key2[31];
switch(iter){
case 0:
for (int k = 0; k<48;k++) { k1[k]=key3[k]; }
break;
case 1:
for (int k = 0; k<48;k++) { k2[k]=key3[k]; }
break;
case 2:
for (int k = 0; k<48;k++) { k3[k]=key3[k]; }
break;
case 3:
for (int k = 0; k<48;k++) { k4[k]=key3[k]; }
break;
case 4:
for (int k = 0; k<48;k++) { k5[k]=key3[k]; }
break;
case 5:
for (int k = 0; k<48;k++) { k6[k]=key3[k]; }
break;
case 6:
for (int k = 0; k<48;k++) { k7[k]=key3[k]; }
break;
case 7:
for (int k = 0; k<48;k++) { k8[k]=key3[k]; }
break;
case 8:
for (int k = 0; k<48;k++) { k9[k]=key3[k]; }
break;
case 9:
for (int k = 0; k<48;k++) { k10[k]=key3[k]; }
break;
case 10:
for (int k = 0; k<48;k++) { k11[k]=key3[k]; }
break;
case 11:
for (int k = 0; k<48;k++) { k12[k]=key3[k]; }
break;
case 12:
for (int k = 0; k<48;k++) { k13[k]=key3[k]; }
break;
case 13:
for (int k = 0; k<48;k++) { k14[k]=key3[k]; }
break;
case 14:
for (int k = 0; k<48;k++) { k15[k]=key3[k]; }
break;
case 15:
for (int k = 0; k<48;k++) { k16[k]=key3[k]; }
break;
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -