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

📄 back.java

📁 我学密码学时做的作业
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        ER[44] = op[29];        ER[45] = op[30];        ER[46] = op[31];        ER[47] = op[ 0];  }  protected void sBox(){          /* 8 s-functions */        int valindex;        valindex = s1[2*ER[ 0]+ER[ 5]][2*(2*(2*ER[ 1]+ER[ 2])+ ER[ 3])+ER[ 4]];        valindex = valindex * 4;        temp[ 0] = (byte)binary[0+valindex];        temp[ 1] = (byte)binary[1+valindex];        temp[ 2] = (byte)binary[2+valindex];        temp[ 3] = (byte)binary[3+valindex];        valindex = s2[2*ER[ 6]+ER[11]][2*(2*(2*ER[ 7]+ER[ 8])+ ER[ 9])+ER[10]];        valindex = valindex = valindex * 4;        temp[ 4] = (byte)binary[0+valindex];        temp[ 5] = (byte)binary[1+valindex];        temp[ 6] = (byte)binary[2+valindex];        temp[ 7] = (byte)binary[3+valindex];        valindex = s3[2*ER[12]+ER[17]][2*(2*(2*ER[13]+ER[14])+ ER[15])+ER[16]];        valindex = valindex = valindex * 4;        temp[ 8] = (byte)binary[0+valindex];        temp[ 9] = (byte)binary[1+valindex];        temp[10] = (byte)binary[2+valindex];        temp[11] = (byte)binary[3+valindex];        valindex = s4[2*ER[18]+ER[23]][2*(2*(2*ER[19]+ER[20])+ER[21])+ER[22]];        valindex = valindex = valindex * 4;        temp[12] = (byte)binary[0+valindex];        temp[13] = (byte)binary[1+valindex];        temp[14] = (byte)binary[2+valindex];        temp[15] = (byte)binary[3+valindex];        valindex = s5[2*ER[24]+ER[29]][2*(2*(2*ER[25]+ER[26])+ER[27])+ER[28]];        valindex = valindex = valindex * 4;        temp[16] = (byte)binary[0+valindex];        temp[17] = (byte)binary[1+valindex];        temp[18] = (byte)binary[2+valindex];        temp[19] = (byte)binary[3+valindex];        valindex = s6[2*ER[30]+ER[35]][2*(2*(2*ER[31]+ER[32])+ ER[33])+ER[34]];        valindex = valindex = valindex * 4;        temp[20] = (byte)binary[0+valindex];        temp[21] = (byte)binary[1+valindex];        temp[22] = (byte)binary[2+valindex];        temp[23] = (byte)binary[3+valindex];        valindex = s7[2*ER[36]+ER[41]][2*(2*(2*ER[37]+ER[38])+ ER[39])+ER[40]];        valindex = valindex = valindex * 4;        temp[24] = (byte)binary[0+valindex];        temp[25] = (byte)binary[1+valindex];        temp[26] = (byte)binary[2+valindex];        temp[27] = (byte)binary[3+valindex];        valindex = s8[2*ER[42]+ER[47]][2*(2*(2*ER[43]+ER[44])+ ER[45])+ER[46]];        valindex = valindex = valindex * 4;        temp[28] = (byte)binary[0+valindex];        temp[29] = (byte)binary[1+valindex];        temp[30] = (byte)binary[2+valindex];        temp[31] = (byte)binary[3+valindex];  }  protected void p(){          /* Permute - P */        Rn[ 0] = temp[15];        Rn[ 1] = temp[ 6];        Rn[ 2] = temp[19];        Rn[ 3] = temp[20];        Rn[ 4] = temp[28];        Rn[ 5] = temp[11];        Rn[ 6] = temp[27];        Rn[ 7] = temp[16];        Rn[ 8] = temp[ 0];        Rn[ 9] = temp[14];        Rn[10] = temp[22];        Rn[11] = temp[25];        Rn[12] = temp[ 4];        Rn[13] = temp[17];        Rn[14] = temp[30];        Rn[15] = temp[ 9];        Rn[16] = temp[ 1];        Rn[17] = temp[ 7];        Rn[18] = temp[23];        Rn[19] = temp[13];        Rn[20] = temp[31];        Rn[21] = temp[26];        Rn[22] = temp[ 2];        Rn[23] = temp[ 8];        Rn[24] = temp[18];        Rn[25] = temp[12];        Rn[26] = temp[29];        Rn[27] = temp[ 5];        Rn[28] = temp[21];        Rn[29] = temp[10];        Rn[30] = temp[ 3];        Rn[31] = temp[24];  }  /**   * 逆置转换   */  protected void IIP(){        output[ 0] = bufout[39];        output[ 1] = bufout[ 7];        output[ 2] = bufout[47];        output[ 3] = bufout[15];        output[ 4] = bufout[55];        output[ 5] = bufout[23];        output[ 6] = bufout[63];        output[ 7] = bufout[31];        output[ 8] = bufout[38];        output[ 9] = bufout[ 6];        output[10] = bufout[46];        output[11] = bufout[14];        output[12] = bufout[54];        output[13] = bufout[22];        output[14] = bufout[62];        output[15] = bufout[30];        output[16] = bufout[37];        output[17] = bufout[ 5];        output[18] = bufout[45];        output[19] = bufout[13];        output[20] = bufout[53];        output[21] = bufout[21];        output[22] = bufout[61];        output[23] = bufout[29];        output[24] = bufout[36];        output[25] = bufout[ 4];        output[26] = bufout[44];        output[27] = bufout[12];        output[28] = bufout[52];        output[29] = bufout[20];        output[30] = bufout[60];        output[31] = bufout[28];        output[32] = bufout[35];        output[33] = bufout[ 3];        output[34] = bufout[43];        output[35] = bufout[11];        output[36] = bufout[51];        output[37] = bufout[19];        output[38] = bufout[59];        output[39] = bufout[27];        output[40] = bufout[34];        output[41] = bufout[ 2];        output[42] = bufout[42];        output[43] = bufout[10];        output[44] = bufout[50];        output[45] = bufout[18];        output[46] = bufout[58];        output[47] = bufout[26];        output[48] = bufout[33];        output[49] = bufout[ 1];        output[50] = bufout[41];        output[51] = bufout[ 9];        output[52] = bufout[49];        output[53] = bufout[17];        output[54] = bufout[57];        output[55] = bufout[25];        output[56] = bufout[32];        output[57] = bufout[ 0];        output[58] = bufout[40];        output[59] = bufout[ 8];        output[60] = bufout[48];        output[61] = bufout[16];        output[62] = bufout[56];        output[63] = bufout[24];  }  /**   * 解密,输出存放在output数组中   */  public void enc() {    //初始置换,workDate---bufout    IP();    //高低32bit分别放入Ln和Rn寄存器    for (int i = 0; i<32; i++) {            Ln[i]=bufout[i];     // L0            Rn[i]=bufout[32+i];  //R0    }    //des迭代过程    for (int iter = 1; iter<17; iter++) {         for (int i = 0; i<32; i++) {              LR[i]=Ln[i];              Ln[i]=Rn[i];          }                expand32To48bit(Rn);  //Rn-1 expand to 48 bit save to ER[]                  switch(iter)                {                        case 1:                                ki=subKey.k1; break;                        case 2:                                ki=subKey.k2; break;                        case 3:                                ki=subKey.k3; break;                        case 4:                                ki=subKey.k4; break;                        case 5:                                ki=subKey.k5; break;                        case 6:                                ki=subKey.k6; break;                        case 7:                                ki=subKey.k7; break;                        case 8:                                ki=subKey.k8; break;                        case 9:                                ki=subKey.k9; break;                        case 10:                                ki=subKey.k10; break;                        case 11:                                ki=subKey.k11; break;                        case 12:                                ki=subKey.k12; break;                        case 13:                                ki=subKey.k13; break;                        case 14:                                ki=subKey.k14; break;                        case 15:                                ki=subKey.k15; break;                        case 16:                                ki=subKey.k16; break;                }                XOR(ER,ki);                sBox();                p();                XOR(Rn,LR);        }        for (int i = 0; i<32; i++) {                bufout[i]=Rn[i];                bufout[32+i]=Ln[i];    }    IIP();    //convert64bitTo4Char();    //return dataDest;   }   /**    * 加密,输出存放在output数组中    */   public void dec(){          //this.dataSrc=dataSrc;          //this.readLen=readLen;          //convert4CharTo64bit(dataSrc);          IP();          for (int i = 0; i<32; i++) {                          Ln[i]=bufout[i];     // L0                          Rn[i]=bufout[32+i];  //R0          }          for (int iter = 1; iter<17; iter++) {                for (int i = 0; i<32; i++) {                          LR[i]=Ln[i];                          Ln[i]=Rn[i];                }                expand32To48bit(Rn);  //Rn-1 expand to 48 bit save to ER[]                switch(iter)                {                        case 1:                                ki=subKey.k16; break;                        case 2:                                ki=subKey.k15; break;                        case 3:                                ki=subKey.k14; break;                        case 4:                                ki=subKey.k13; break;                        case 5:                                ki=subKey.k12; break;                        case 6:                                ki=subKey.k11; break;                        case 7:                                ki=subKey.k10; break;                        case 8:                                ki=subKey.k9; break;                        case 9:                                ki=subKey.k8; break;                        case 10:                                ki=subKey.k7; break;                        case 11:                                ki=subKey.k6; break;                        case 12:                                ki=subKey.k5; break;                        case 13:                                ki=subKey.k4; break;                        case 14:                                ki=subKey.k3; break;                        case 15:                                ki=subKey.k2; break;                        case 16:                                ki=subKey.k1; break;                }                XOR(ER,ki);                sBox();                p();                XOR(Rn,LR);        }        for (int i = 0; i<32; i++) {                bufout[i]=Rn[i];                bufout[32+i]=Ln[i];    }    IIP();    //convert64bitTo4Char();    //return dataDest;  }}

⌨️ 快捷键说明

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