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

📄 sbox.java

📁 this progam written in java language and describe the des algorithm that allow us to encrypt and de
💻 JAVA
字号:
/*
 *   *       Please Visit us at www.codemiles.com     *
 *  This Program was Developed by www.codemiles.com forums Team
 *  *           Please Don't Remove This Comment       *
 */

public class SBox {
    
    /** Creates a new instance of SBox */
    public SBox() {
    }
    
    public void DoDecimal(int [] num){
        dec1[0]=num[0];
        dec1[1]=num[5];
        row=1*dec1[1]+2*dec1[0];
        
        //System.out.print("-------"+row);
        
    }
    
    
    public void DoFourDecimal(int [] num){
        dec2[0]=num[1];
        dec2[1]=num[2];
        dec2[2]=num[3];
        dec2[3]=num[4];
        col=1*dec2[3]+2*dec2[2]+dec2[1]*4+dec2[0]*8;
        
        //System.out.print("***********"+col);
        
    }
    public void SelectSBox(int choice, int row, int col){
        
        switch(choice){
            case 0: SBox_Result[index1]=SBOX1[row][col]; index1++; break;
            case 1: SBox_Result[index1]=SBOX2[row][col]; index1++; break;
            case 2: SBox_Result[index1]=SBOX3[row][col]; index1++; break;
            case 3: SBox_Result[index1]=SBOX4[row][col]; index1++; break;
            case 4: SBox_Result[index1]=SBOX5[row][col]; index1++; break;
            case 5: SBox_Result[index1]=SBOX6[row][col]; index1++; break;
            case 6: SBox_Result[index1]=SBOX7[row][col]; index1++; break;
            case 7: SBox_Result[index1]=SBOX8[row][col]; index1++; break;
        }
        
    }
    
    public void make32bit(int num){
        int num1 = 0,num2,num3;
        num1=num;
        System.out.println("Code ");
        for(int i=0; i<4; i++){
            
            num2=num1%2;
            num3=num1/2;
            num1=num3;
            after_SBox[index2]=num2;
            
            System.out.print(after_SBox[index2]);
            index2++;
            
        }
        
    }
    public void Reverse(int [] num){
        int count=0;
        int fix=3;
        int temp1,temp2;
        while(count!=32){
            for(int i=0; i<2; i++){
                
                temp1=num[count+i];
                
                num[count+i]=num[fix-(count+i)];
                num[fix-(count+i)]=temp1;
                
            }
            fix+=8;
            count+=4;
        }
        
        
    }
    public void Fill_P()   {
        int index=0;
        for(int row=0;row<8; row++){
            for(int col=0; col<4; col++){
                store_num[index]=P[row][col];
                index++;
            }
            
        }
        
        
    }
    
    public void Do_P(int [] after_SBox, int [] func_out ){
        int temp=0;
        int i=0;
        int loop=0;
        int check=0;
        while(check!=32){
            temp=store_num[i];
            if(temp==loop){
                func_out[check]=after_SBox[loop-1];
                loop=0;
                check++;
                i++;
            }
            loop++;
        }
        
    }
    
    public void DoSBox(int [] XOR_Out, int [] S_Out){
        
        DesPanel.StepsText.append("*********S-Box Stages********* "+'\n');
        int count=0;
        int choice=0;
        int i;
        index=0;
        while(count!=48){
            
            for(i=0; i<6; i++) {
                temp[i]=XOR_Out[i+count];
                
            }
            System.out.println(" ");
            DoDecimal(temp);
            //  System.out.println();
            DoFourDecimal(temp);
            //    System.out.println();
            SBox_row[index]=row;
            SBox_col[index]=col;
            SelectSBox(choice,SBox_row[index],SBox_col[index]);
            System.out.println(index+" ="+SBox_Result[index]+"ROW "+row+" COL "+col);
            
            make32bit(SBox_Result[index]);
            
            
            index++;
            choice++;
            count+=6;
            
        }
        Reverse(after_SBox);
        index=0;
        
        for(int d=0 ; d<4; d++){
            for(int j=0; j<8; j++){
                after_SBoxs[d][j]=Integer.toString(after_SBox[index]);
                index++;
            }
        }
        index=0;
        arrayprinter.printarray(after_SBoxs,"Final Result After SBoxes");
        
        Fill_P();
        Do_P(after_SBox,func_out);
        
        
                for(int d=0 ; d<4; d++){
            for(int j=0; j<8; j++){
                func_outS[d][j]=Integer.toString(func_out[index]);
                index++;
            }
        }
        index=0;
        arrayprinter.printarray(func_outS,"After IP");
        for(int j=0; j<32; j++)
            S_Out[j]=func_out[j];
        //   System.out.println();
        
        
    }
    
    private int index=0;
    private int[] func_out=new int[32];
    private int [] store_num=new int[32];
    private String text48;
    private int [] after_SBox=new int[32];
    private int index1=0;
    private int index2=0;
    private int row=0;
    private int col=0;
    private int [] SBox_Result=new int [8];
    private int[] SBox_row=new int[8];
    private int[] SBox_col= new int[8];
    private int [] dec1=new int[2];
    private int [] dec2=new int[4];
    private int[] temp =new int[6];
    private int [][] SBOX1=
    {{14 ,4 ,13 ,1 ,2 ,15 ,11 ,8 ,3 ,10 ,6 ,12 ,5 ,9 ,0 ,7},
     {0 ,15 ,7 ,4 ,14 ,2 ,13 ,1 ,10 ,6 ,12 ,11 ,9 ,5 ,3 ,8},
     {4 ,1 ,14 ,8 ,13 ,6 ,2 ,11 ,15 ,12 ,9 ,7 ,3 ,10 ,5 ,0},
     {15, 12, 8, 2, 4, 9, 1, 7 ,5, 11, 3, 14, 10, 0, 6, 13}
    };
    
    private int [][] SBOX2=
    {{15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12 ,0, 5, 1},
     {3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9 ,11, 5},
     {0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15},
     {13 ,8 ,10 ,1 ,3 ,15 ,4 ,2 ,11 ,6 ,7 ,12 ,0 ,5 ,14 ,9}
    };
    
    private int [][] SBOX3={{10 ,0 ,9 ,14 ,6 ,3 ,15 ,5 ,1 ,13 ,12 ,7 ,11 ,4 ,2 ,8},
    {13, 7, 0, 9, 3, 4, 6, 10, 2 ,8 ,5 ,14, 12, 11, 15, 1},
    {13, 6, 4, 9, 8 ,15 ,3 ,0, 11, 1, 2, 12, 5, 10, 14, 7},
    {1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12}
    };
    
    private int [][] SBOX4={{7 ,13 ,14 ,3 ,0 ,6 ,9 ,10 ,1 ,2 ,8 ,5 ,11 ,12 ,4 ,15},
    {13 ,8 ,11 ,5, 6 ,15, 0 ,3 ,4 ,7 ,2 ,12 ,1 ,10 ,14 ,9},
    {10, 6, 9, 0, 12, 11, 7 ,13, 15, 1, 3, 14, 5, 2, 8, 4},
    {3, 15, 0, 6, 10, 1, 13, 8, 9, 4 ,5 ,11 ,12, 7, 2, 14}
    };
    
    private int [][] SBOX5={{2 ,12 ,4 ,1 ,7 ,10 ,11 ,6 ,8 ,5 ,3 ,15 ,13 ,0 ,14 ,9},
    {14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3 ,9 ,8 ,6},
    {4 ,2, 1, 11, 10, 13, 7 ,8 ,15, 9, 12, 5, 6, 3, 0, 14},
    {11, 8, 12 ,7, 1, 14 ,2 ,13 ,6 ,15, 0 ,9, 10, 4, 5, 3}
    };
    
    private int [][] SBOX6={{12 ,1 ,10 ,15, 9 ,2, 6 ,8 ,0 ,13 ,3 ,4 ,14 ,7 ,5 ,11},
    {10, 15, 4 ,2 ,7 ,12 ,9, 5, 6, 1, 13 ,14 ,0, 11, 3 ,8},
    {9, 14, 15, 5, 2 ,8 ,12, 3, 7 ,0 ,4 ,10, 1, 13 ,11 ,6},
    {4, 3, 2, 12, 9, 5, 15 ,10 ,11, 14, 1, 7, 6, 0, 8, 13}
    };
    
    private int [][] SBOX7={ {4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7 ,5 ,10 ,6 ,1},
    {13, 0, 11, 7, 4, 9, 1, 10, 14 ,3 ,5, 12, 2, 15, 8, 6},
    {1, 4, 11, 13, 12, 3, 7 ,14, 10, 15, 6, 8, 0, 5, 9, 2},
    {6, 11, 13, 8 ,1 ,4, 10, 7, 9, 5 ,0 ,15 ,14, 2, 3, 12}
    };
    private int [][] SBOX8={ {13, 2, 8, 4, 6, 15, 11, 1 ,10, 9, 3, 14, 5, 0, 12, 7},
    {1, 15, 13, 8 ,10, 3 ,7 ,4 ,12, 5, 6 ,11, 0, 14, 9, 2},
    {7, 11, 4, 1 ,9 ,12 ,14 ,2 ,0 ,6 ,10, 13 ,15 ,3 ,5 ,8},
    {2, 1, 14, 7 ,4 ,10, 8 ,13, 15, 12, 9, 0, 3, 5, 6, 11}
    };
    private int [][] P={{16 ,7 ,20 ,21},
    {29, 12, 28, 17},
    {1, 15, 23, 26},
    {5, 18, 31, 10},
    {2 ,8 ,24 ,14},
    {32, 27, 3, 9},
    {19, 13, 30, 6},
    {22, 11, 4, 25}
    };
    private String after_SBoxs [][]= new String[4][8];
    private String func_outS [][]= new String[4][8];
}
/*
 *   *       Please Visit us at www.codemiles.com     *
 *  This Program was Developed by www.codemiles.com forums Team
 *  *           Please Don't Remove This Comment       *
 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -