⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subkey.java

📁 这是一个用JAVA实现的DES算法
💻 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 + -