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

📄 i_p_lab4view.java

📁 DES encrypting algorithm
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/* * i_p_lab4View.java */package lab4;import org.jdesktop.application.Action;import org.jdesktop.application.ResourceMap;import org.jdesktop.application.SingleFrameApplication;import org.jdesktop.application.FrameView;import org.jdesktop.application.TaskMonitor;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.lang.Math;import java.util.ArrayList;import java.util.Random;import java.util.Scanner;import java.util.logging.Level;import java.util.logging.Logger;import javax.swing.Timer;import javax.swing.Icon;import javax.swing.JDialog;import javax.swing.JFileChooser;import javax.swing.JFrame;/** * The application's main frame. */public class i_p_lab4View extends FrameView {    public i_p_lab4View(SingleFrameApplication app) {        super(app);        initComponents();        // status bar initialization - message timeout, idle icon and busy animation, etc        ResourceMap resourceMap = getResourceMap();        int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout");        messageTimer = new Timer(messageTimeout, new ActionListener() {            public void actionPerformed(ActionEvent e) {                statusMessageLabel.setText("");            }        });        messageTimer.setRepeats(false);        int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate");        for (int i = 0; i < busyIcons.length; i++) {            busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]");        }        busyIconTimer = new Timer(busyAnimationRate, new ActionListener() {            public void actionPerformed(ActionEvent e) {                busyIconIndex = (busyIconIndex + 1) % busyIcons.length;                statusAnimationLabel.setIcon(busyIcons[busyIconIndex]);            }        });        idleIcon = resourceMap.getIcon("StatusBar.idleIcon");        statusAnimationLabel.setIcon(idleIcon);        progressBar.setVisible(false);        // connecting action tasks to status bar via TaskMonitor        TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext());        taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() {            public void propertyChange(java.beans.PropertyChangeEvent evt) {                String propertyName = evt.getPropertyName();                if ("started".equals(propertyName)) {                    if (!busyIconTimer.isRunning()) {                        statusAnimationLabel.setIcon(busyIcons[0]);                        busyIconIndex = 0;                        busyIconTimer.start();                    }                    progressBar.setVisible(true);                    progressBar.setIndeterminate(true);                } else if ("done".equals(propertyName)) {                    busyIconTimer.stop();                    statusAnimationLabel.setIcon(idleIcon);                    progressBar.setVisible(false);                    progressBar.setValue(0);                } else if ("message".equals(propertyName)) {                    String text = (String)(evt.getNewValue());                    statusMessageLabel.setText((text == null) ? "" : text);                    messageTimer.restart();                } else if ("progress".equals(propertyName)) {                    int value = (Integer)(evt.getNewValue());                    progressBar.setVisible(true);                    progressBar.setIndeterminate(false);                    progressBar.setValue(value);                }            }        });    }       public static void WriteFile(String FileName,String Content) throws IOException       {           PrintWriter out = new PrintWriter(new FileWriter(FileName));           out.print(Content);           out.close();       }    /** This method is called from within the constructor to     * initialize the form.     * WARNING: Do NOT modify this code. The content of this method is     * always regenerated by the Form Editor.     */    @SuppressWarnings("unchecked")    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents    private void initComponents() {        mainPanel = new javax.swing.JPanel();        jButton1 = new javax.swing.JButton();        jButton2 = new javax.swing.JButton();        menuBar = new javax.swing.JMenuBar();        javax.swing.JMenu fileMenu = new javax.swing.JMenu();        javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem();        statusPanel = new javax.swing.JPanel();        javax.swing.JSeparator statusPanelSeparator = new javax.swing.JSeparator();        statusMessageLabel = new javax.swing.JLabel();        statusAnimationLabel = new javax.swing.JLabel();        progressBar = new javax.swing.JProgressBar();        mainPanel.setName("mainPanel"); // NOI18N        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(lab4.i_p_lab4.class).getContext().getResourceMap(i_p_lab4View.class);        jButton1.setText(resourceMap.getString("jButton1.text")); // NOI18N        jButton1.setName("jButton1"); // NOI18N        jButton1.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                jButton1ActionPerformed(evt);            }        });        jButton2.setText(resourceMap.getString("jButton2.text")); // NOI18N        jButton2.setName("jButton2"); // NOI18N        jButton2.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                jButton2ActionPerformed(evt);            }        });        javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);        mainPanel.setLayout(mainPanelLayout);        mainPanelLayout.setHorizontalGroup(            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()                .addGap(105, 105, 105)                .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)                    .addComponent(jButton2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 188, Short.MAX_VALUE)                    .addComponent(jButton1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 188, Short.MAX_VALUE))                .addGap(107, 107, 107))        );        mainPanelLayout.setVerticalGroup(            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)            .addGroup(mainPanelLayout.createSequentialGroup()                .addGap(22, 22, 22)                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)                .addGap(65, 65, 65)                .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)                .addContainerGap(49, Short.MAX_VALUE))        );        menuBar.setName("menuBar"); // NOI18N        fileMenu.setText(resourceMap.getString("fileMenu.text")); // NOI18N        fileMenu.setName("fileMenu"); // NOI18N        javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(lab4.i_p_lab4.class).getContext().getActionMap(i_p_lab4View.class, this);        exitMenuItem.setAction(actionMap.get("quit")); // NOI18N        exitMenuItem.setName("exitMenuItem"); // NOI18N        fileMenu.add(exitMenuItem);        menuBar.add(fileMenu);        statusPanel.setName("statusPanel"); // NOI18N        statusPanelSeparator.setName("statusPanelSeparator"); // NOI18N        statusMessageLabel.setName("statusMessageLabel"); // NOI18N        statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);        statusAnimationLabel.setName("statusAnimationLabel"); // NOI18N        progressBar.setName("progressBar"); // NOI18N        javax.swing.GroupLayout statusPanelLayout = new javax.swing.GroupLayout(statusPanel);        statusPanel.setLayout(statusPanelLayout);        statusPanelLayout.setHorizontalGroup(            statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)            .addComponent(statusPanelSeparator, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)            .addGroup(statusPanelLayout.createSequentialGroup()                .addContainerGap()                .addComponent(statusMessageLabel)                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 230, Short.MAX_VALUE)                .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)                .addComponent(statusAnimationLabel)                .addContainerGap())        );        statusPanelLayout.setVerticalGroup(            statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)            .addGroup(statusPanelLayout.createSequentialGroup()                .addComponent(statusPanelSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE)                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)                .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)                    .addComponent(statusMessageLabel)                    .addComponent(statusAnimationLabel)                    .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))                .addGap(3, 3, 3))        );        setComponent(mainPanel);        setMenuBar(menuBar);        setStatusBar(statusPanel);    }// </editor-fold>//GEN-END:initComponents    //генерация матрицыprivate int[][] getRandMatr64 (int strok,int stolb){   Random random = new Random();       int matr[][];       matr=new int [strok][stolb];    for (int i=0; i<strok; i++)        for (int j=0; j<stolb; j++)      matr[i][j]=Math.abs(random.nextInt()) % 2;               for (int i=0; i<strok; i++)       {   for (int j=0; j<stolb; j++)            {System.out.print(matr[i][j]);             System.out.print(" ");}            System.out.println();}      return matr;}private int ConvertToDec (String s){int chislo=0; int step=s.length()-1;for (int i=0; i<s.length(); i++){    chislo=chislo +(int) (Integer.parseInt(s.substring(i, i + 1)) * Math.pow(2, step));step--;}    return chislo;}private String Sdvig (String s){String sim=s.substring(0, 1); String rez="";for (int i=1; i<s.length(); i++){    rez=rez+s.substring(i, i+1);}rez=rez+sim;    return rez;}private String obr_Sdvig (String s){String sim=s.substring(s.length()-1, s.length()); String rez=""; rez=sim;for (int i=0; i<s.length()-1; i++){    rez=rez+s.substring(i, i+1);}    return rez;}private int[][] get_S(){ Random random = new Random();  int zn[];  zn=new int[16];  int matr[][]; matr=new int [4][16]; for (int i=0; i<4; i++) {  for (int j=0; j<16; j++)         while(1<10)         {int chislo=Math.abs(random.nextInt()) % 16;          //System.out.println("chislo="+chislo);          int bool=0;          for (int k2=0; k2<j; k2++)          {//System.out.println(zn[k]);              if (chislo==zn[k2])                    bool=1;          }          //System.out.println("bool="+bool);          if (bool==0)          {zn[j]=chislo;          matr[i][j]=chislo;          break;}         }    zn=new int[16]; }    for (int i=0; i<4; i++)       {   for (int j=0; j<16; j++)            {System.out.print(matr[i][j]);             System.out.print(" ");}            System.out.println();}          return matr;}int key_matr[][]; int matr_nach[][]; int ras[][];int matr_kon[][];  ArrayList l_m_s;  int p[][];   int b[][];   int k[][];    int si[];    String rezultat1;    String C="", D="";    String C16="", D16="";    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed// TODO add your handling code here:                      //считывание данных из файла //выбор файла  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())             {strk=strk+in.nextLine();                                     }}        catch ( Exception ex )         {ex.printStackTrace();}      System.out.println ("strk="+strk);         //создание последовательности бит      for (int i=0; i<strk.length(); i++)     { int kod_sim=strk.substring(i,i+1).codePointAt(0);     String bin_sim=Integer.toBinaryString(kod_sim);          int kol_vo_bit=bin_sim.length();     if (kol_vo_bit<12)         for (int k1=0; k1<(12-kol_vo_bit); k1++)             bin_sim="0"+bin_sim;                // System.out.println ("байты символа="+kod_sim);      System.out.println ("биты символа "+i+" :"+bin_sim);       strk_bin=strk_bin+bin_sim;                        //System.out.println ("kod_sim="+kod_sim);     }        int malo=strk_bin.length()/64+1;    malo=64*malo-strk_bin.length();    for (int i=0; i<malo; i++)        strk_bin=strk_bin+"0";        //strk_bin="01000010001001000011010101000011101001000100000101000100001000000100001000100100001101010100001110100100010000010100010000100000";   //   strk_bin="11111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000";     System.out.println ("последовательность бит="+strk_bin);     System.out.println ("размер последовательность бит="+strk_bin.length());     //System.out.println ("strk_bin="+strk_bin);//GEN-LAST:event_jButton1ActionPerformed                       //ключ шифрованияString matr[][]; matr=new String [8][8];key_matr=new int [8][8];System.out.println ("Ключ шифрования"); key_matr=getRandMatr64(8,8); String key="";for (int i=0; i<8; i++)    for (int j=0; j<8; j++)        key=key+key_matr[i][j];                  //создание матрицы начальной перестановки  matr_nach=new int [8][8]; int elem=58;for (int i=0;i<4;i++){ matr_nach[i][0]=elem; elem=elem+2;}  elem=57;for (int i=4;i<8;i++){ matr_nach[i][0]=elem; elem=elem+2;}  for (int i=0; i<8; i++)     for (int j=1; j<8; j++)         matr_nach[i][j]=matr_nach[i][j-1]-8; System.out.println ("матрица начальной перестановки");for (int i=0; i<8; i++)       {   for (int j=0; j<8; j++)            {System.out.print(matr_nach[i][j]);             System.out.print(" ");}            System.out.println();}               //функция расширения  int count=1;  ras=new int [8][6];  ras[0][0]=32;    for (int j=1; j<6; j++)  { ras[0][j]=count;       count++;}   count=count-2;  for (int i=1; i<8; i++)  {for (int j=0; j<6; j++)      {       ras[i][j]=count;       count++;      }  count=count-2;}  ras[7][5]=1;      System.out.println ("функция расширения");for (int i=0; i<8; i++)       {   for (int j=0; j<6; j++)            {System.out.print(ras[i][j]);             System.out.print(" ");}            System.out.println();}        

⌨️ 快捷键说明

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