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

📄 i_p_lab4view.java

📁 DES encrypting algorithm
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
for (int k1=1; k1<=R.length(); k1++)    for (int i=0; i<8; i++)        for (int j=0; j<6; j++)            if (ras[i][j]==k1)            matr_e[i][j]=R.substring(k1-1, k1);R="";  for (int i=0; i<8; i++)          for (int j=0; j<6; j++)            R=R+matr_e[i][j];   System.out.println ("последовательность R "+R);      //сдвиг    for (int z=0; z<si[t]; z++)   {C=Sdvig(C);    D=Sdvig(D);}CD=C+D;   //заполнение матрицы K битамиmatr_k=new String[8][7];for (int k1=1; k1<=CD.length(); k1++)    for (int i=0; i<8; i++)        for (int j=0; j<6; j++)            if (k[i][j]==k1)            matr_k[i][j]=CD.substring(k1-1, k1);//создание последовательностей C1D1C1D1="";   for (int i=0; i<8; i++)        for (int j=0; j<6; j++)           C1D1=C1D1+matr_k[i][j];System.out.println ("последовательность C1D1 "+C1D1);sum="";for (int i=0; i<R.length();i++){   xor=Integer.parseInt(R.substring(i, i+1))^Integer.parseInt(C1D1.substring(i, i+1));    sum=sum+xor;}System.out.println ("последовательность sum(xor) "+sum);//преобразования с использованием матриц Spreobr="";for (int i=0; i<8; i++){ int m[][];  m=new int [4][16];   m=(int[][])l_m_s.get(i);  //System.out.println ("последовательность "+sum.substring(0, 6)); // System.out.println ("матрица S "+sum.substring(0, 6));    String st="";  st=sum.substring(0, 1);  st=st+sum.substring(5, 6);    int nom_st=ConvertToDec (st);  //System.out.println ("nom_st "+nom_st);  int kol=ConvertToDec (sum.substring(1, 5));  //System.out.println ("kol "+kol);  String chast="";   // System.out.println ("m "+m[nom_st][kol]);  chast=Integer.toBinaryString(m[nom_st][kol]);   if (chast.length()<4)      for (int j=0; j<=4-chast.length(); j++)          chast="0"+chast;      if (chast.length()<4)           chast="0"+chast; // System.out.println ("chast "+chast);  preobr=preobr+chast;  sum=sum.substring(6, sum.length());}System.out.println ("последовательность preobr "+preobr);//заполнение битами функции перестановки Рmatr_p=new String[8][4];for (int k1=1; k1<=preobr.length(); k1++)    for (int i=0; i<8; i++)        for (int j=0; j<4; j++)            if (p[i][j]==k1)            matr_p[i][j]=preobr.substring(k1-1, k1);//результат функции шифрованияshifr="";for (int i=0; i<8; i++)        for (int j=0; j<4; j++)            shifr=shifr+matr_p[i][j];System.out.println ("shifr "+shifr);R="";for (int i=0; i<shifr.length();i++){   xor=Integer.parseInt(shifr.substring(i, i+1))^Integer.parseInt(L.substring(i, i+1));    R=R+xor;}L=L1;System.out.println ("последовательность L "+L);System.out.println ("последовательность R "+R);}String LR=L+R;//System.out.println ("LR "+LR);//заполнение битами матрицы конечной перестановкиString matr_end[][];matr_end=new String[8][8];for (int k1=1; k1<=LR.length(); k1++)    for (int i=0; i<8; i++)        for (int j=0; j<8; j++)            if (matr_kon[i][j]==k1)            matr_end[i][j]=LR.substring(k1-1, k1);//результат шифрованияfor (int i=0; i<8; i++)        for (int j=0; j<8; j++)            rezultat1=rezultat1+matr_end[i][j];System.out.println ("зашифрованная строка "+rezultat1);System.out.println (); } C16=C;D16=D; //System.out.println ("зашифрованная строка "+rezultat1);System.out.println ("зашифрованная строка длина"+rezultat1.length());//эелемнты ключа шифра//запись в файлString f_n=chooser.getSelectedFile().getAbsolutePath();     f_n=f_n.substring(0, f_n.length()-4);     f_n=f_n+"1"+".txt";        try {            WriteFile(f_n, rezultat1);        } catch (IOException ex) {            Logger.getLogger(i_p_lab4View.class.getName()).log(Level.SEVERE, null, ex);        }}private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed// TODO add your handling code here:System.out.println(ConvertToDec (Integer.toBinaryString(11)));//GEN-LAST:event_jButton2ActionPerformedrezultat1="";//считывание данных из файла //выбор файла  String s="",strk="",strk_unikod="",strk_bin="";     JFileChooser chooser = new JFileChooser();     int returnVal = chooser.showOpenDialog(chooser);    if(returnVal == JFileChooser.APPROVE_OPTION) {    //jTextField2.setText(chooser.getSelectedFile().getName());    s=chooser.getSelectedFile().getAbsolutePath();}         //чтение файл   try {             Scanner in = new Scanner(new File(s));             while (in.hasNext())             {rezultat1=rezultat1+in.nextLine();                                     }}        catch ( Exception ex )         {ex.printStackTrace();}      System.out.println ("rezultat1="+rezultat1); String ishodn="";//-----------------------Расшифрование------------------------------------------int predel=rezultat1.length()/64;for (int time=0; time<predel; time++){String    rezultat=rezultat1.substring(0, 64);          rezultat1=rezultat1.substring(64, rezultat1.length());          System.out.println ("rezultat "+rezultat);//эелемнты ключа шифраC=C16;D=D16;//заполнение битами матрицы конечной перестановкиString matr_end[][];matr_end=new String[8][8];int poz=0;for (int i=0; i<8; i++)        for (int j=0; j<8; j++)        {           matr_end[i][j]=rezultat.substring(poz, poz+1);                      poz++;        }String LR="";//матрица конечной перестановкиfor (int k1=1; k1<=rezultat.length(); k1++)    for (int i=0; i<8; i++)        for (int j=0; j<8; j++)            if (matr_kon[i][j]==k1)            LR=LR+matr_end[i][j];System.out.println ("LR "+LR);String L=LR.substring(0, 32);System.out.println ("L "+L);String R=LR.substring(32, 64);System.out.println ("R "+R);//цикл шифрования---------------------------------------------------------------for (int t=15; t>=0; t--){    System.out.println ();    System.out.println ("-------- итерация -------- t= "+t);    System.out.println ();                  //заполнение матрицы расширения битами  String R1=R;String L1=L;String matr_e[][];matr_e=new String[8][6];for (int k1=1; k1<=R.length(); k1++)    for (int i=0; i<8; i++)        for (int j=0; j<6; j++)            if (ras[i][j]==k1)            matr_e[i][j]=L.substring(k1-1, k1);R="";  for (int i=0; i<8; i++)          for (int j=0; j<6; j++)            R=R+matr_e[i][j];   System.out.println ("последовательность R "+R);      String CD=C+D;   //заполнение матрицы K битамиString matr_k[][];matr_k=new String[8][7];for (int k1=1; k1<=CD.length(); k1++)    for (int i=0; i<8; i++)        for (int j=0; j<6; j++)            if (k[i][j]==k1)            matr_k[i][j]=CD.substring(k1-1, k1);//создание последовательностей C1D1String C1D1="";   for (int i=0; i<8; i++)        for (int j=0; j<6; j++)           C1D1=C1D1+matr_k[i][j];System.out.println ("последовательность C1D1 "+C1D1);String sum="";for (int i=0; i<R.length();i++){ int  xor=Integer.parseInt(R.substring(i, i+1))^Integer.parseInt(C1D1.substring(i, i+1));    sum=sum+xor;}System.out.println ("последовательность sum(xor) "+sum);//преобразования с использованием матриц SString preobr="";for (int i=0; i<8; i++){ int m[][];  m=new int [4][16];   m=(int[][])l_m_s.get(i);  //System.out.println ("последовательность "+sum.substring(0, 6)); // System.out.println ("матрица S "+sum.substring(0, 6));    String st="";  st=sum.substring(0, 1);  st=st+sum.substring(5, 6);    int nom_st=ConvertToDec (st);  //System.out.println ("nom_st "+nom_st);  int kol=ConvertToDec (sum.substring(1, 5));  //System.out.println ("kol "+kol);  String chast="";   // System.out.println ("m "+m[nom_st][kol]);  chast=Integer.toBinaryString(m[nom_st][kol]);   if (chast.length()<4)      for (int j=0; j<=4-chast.length(); j++)          chast="0"+chast;      if (chast.length()<4)           chast="0"+chast; // System.out.println ("chast "+chast);  preobr=preobr+chast;  sum=sum.substring(6, sum.length());}System.out.println ("последовательность preobr "+preobr);//заполнение битами функции перестановки РString matr_p[][];matr_p=new String[8][4];for (int k1=1; k1<=preobr.length(); k1++)    for (int i=0; i<8; i++)        for (int j=0; j<4; j++)            if (p[i][j]==k1)            matr_p[i][j]=preobr.substring(k1-1, k1);//результат функции шифрованияString shifr="";for (int i=0; i<8; i++)        for (int j=0; j<4; j++)            shifr=shifr+matr_p[i][j];System.out.println ("shifr "+shifr);//сдвиг    for (int z=0; z<si[t]; z++)   {C=obr_Sdvig(C);    D=obr_Sdvig(D);}L="";for (int i=0; i<shifr.length();i++){  int xor=Integer.parseInt(shifr.substring(i, i+1))^Integer.parseInt(R1.substring(i, i+1));    L=L+xor;}System.out.println ("последовательность L "+L);System.out.println ("последовательность R "+L1);R=L1;}LR=L+R;//заполнение битами матрицы конечной перестановкиString matr_n[][];matr_n=new String[8][8];poz=0;for (int i=0; i<8; i++)        for (int j=0; j<8; j++)        {           matr_n[i][j]=LR.substring(poz, poz+1);                      poz++;        }//матрица конечной перестановкиfor (int k1=1; k1<=LR.length(); k1++)    for (int i=0; i<8; i++)        for (int j=0; j<8; j++)            if (matr_nach[i][j]==k1)            ishodn=ishodn+matr_n[i][j];System.out.println ("ishodn "+ishodn);}//System.out.println ("ishodn "+ishodn);System.out.println ("ishodn dlina"+ishodn.length());String simvols="";int predel1=ishodn.length()/12;for (int i=0; i<predel1; i++){    if (!((ishodn.substring(0, 12).compareTo("000000000000"))==0))  simvols=simvols + (char) ConvertToDec(ishodn.substring(0, 12));  ishodn=ishodn.substring(12, ishodn.length());}System.out.println ("Simvols  "+simvols);//запись в файлString f_n=chooser.getSelectedFile().getAbsolutePath();     f_n=f_n.substring(0, f_n.length()-4);     f_n=f_n+"2"+".txt";        try {            WriteFile(f_n, simvols);        } catch (IOException ex) {            Logger.getLogger(i_p_lab4View.class.getName()).log(Level.SEVERE, null, ex);        }     }                                            // Variables declaration - do not modify//GEN-BEGIN:variables    private javax.swing.JButton jButton1;    private javax.swing.JButton jButton2;    private javax.swing.JPanel mainPanel;    private javax.swing.JMenuBar menuBar;    private javax.swing.JProgressBar progressBar;    private javax.swing.JLabel statusAnimationLabel;    private javax.swing.JLabel statusMessageLabel;    private javax.swing.JPanel statusPanel;    // End of variables declaration//GEN-END:variables    private final Timer messageTimer;    private final Timer busyIconTimer;    private final Icon idleIcon;    private final Icon[] busyIcons = new Icon[15];    private int busyIconIndex = 0;    }

⌨️ 快捷键说明

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