Advertisement
Guest User

Untitled

a guest
Feb 24th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.60 KB | None | 0 0
  1. import javax.swing.*;
  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;
  4. import java.awt.event.KeyAdapter;
  5. import java.awt.event.KeyEvent;
  6. import java.util.Random;
  7.  
  8. public class MainWindow extends JFrame {
  9.     private JPanel mainPanel;
  10.     private JTextField sourceField;
  11.     private JTextField keyField;
  12.     private JButton buttonOK;
  13.     private JTextField labelAns;
  14.     private JTextField keyField2;
  15.  
  16.     MainWindow(){
  17.         setTitle("lab1");
  18.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  19.         setSize(400, 150);
  20.         setLocationRelativeTo(null);
  21.         setVisible(true);
  22.         add(mainPanel);
  23.         mainPanel.setVisible(true);
  24.  
  25.         Random random = new Random();
  26.         int n = -1;
  27.         while (n < 0){
  28.             n = random.nextInt();
  29.         }
  30.         keyField.setText(String.valueOf(n));
  31.         n = -1;
  32.         while (n < 0){
  33.             n = random.nextInt();
  34.         }
  35.         keyField2.setText(String.valueOf(n));
  36.  
  37.  
  38.         sourceField.addKeyListener(new KeyAdapter() {
  39.             @Override
  40.             public void keyTyped(KeyEvent e) {
  41.                 char ch = e.getKeyChar();
  42.                 if(ch == KeyEvent.VK_ENTER){
  43.                     buttonOK.doClick();
  44.                 }
  45.             }
  46.         });
  47.         keyField.addKeyListener(new KeyAdapter() {
  48.             @Override
  49.             public void keyTyped(KeyEvent e) {
  50.                 char ch = e.getKeyChar();
  51.                 if(!((ch >= '0') && (ch <= '9') || (ch == KeyEvent.VK_BACK_SPACE) || (ch == KeyEvent.VK_DELETE))){
  52.                     getToolkit().beep();
  53.                     e.consume();
  54.                 }
  55.             }
  56.         });
  57.         keyField2.addKeyListener(new KeyAdapter() {
  58.             @Override
  59.             public void keyTyped(KeyEvent e) {
  60.                 char ch = e.getKeyChar();
  61.                 if(!((ch >= '0') && (ch <= '9') || (ch == KeyEvent.VK_BACK_SPACE) || (ch == KeyEvent.VK_DELETE))){
  62.                     getToolkit().beep();
  63.                     e.consume();
  64.                 }
  65.             }
  66.         });
  67.         buttonOK.addActionListener(new ActionListener() {
  68.             @Override
  69.             public void actionPerformed(ActionEvent e) {
  70.                 if(sourceField.getText() != null && keyField.getText() != null && keyField2.getText() != null){
  71.  
  72.                     byte[] bytesSrc = sourceField.getText().getBytes(), bytesKey = keyField.getText().getBytes(), bytesKey2 = keyField2.getText().getBytes();
  73.                     StringBuilder binarySrc = new StringBuilder();
  74.                     for (byte b : bytesSrc)
  75.                     {
  76.                         int val = b;
  77.                         for (int i = 0; i < 8; i++)
  78.                         {
  79.                             binarySrc.append((val & 128) == 0 ? 0 : 1);
  80.                             val <<= 1;
  81.                         }
  82.                         //binarySrc.append(' ');
  83.                     }
  84.  
  85.                     StringBuilder binaryKey = new StringBuilder();
  86.                     for(byte b : bytesKey){
  87.                         int val = b;
  88.                         for(int i = 0; i < 8; i++){
  89.                             binaryKey.append((val & 128) == 0 ? 0 : 1);
  90.                             val <<= 1;
  91.                         }
  92.                         //binaryKey.append(' ');
  93.                     }
  94.  
  95.                     StringBuilder binaryKey2 = new StringBuilder();
  96.                     for(byte b : bytesKey2){
  97.                         int val = b;
  98.                         for(int i = 0; i < 8; i++){
  99.                             binaryKey2.append((val & 128) == 0 ? 0 : 1);
  100.                             val <<= 1;
  101.                         }
  102.                         //binaryKey.append(' ');
  103.                     }
  104.  
  105.                     char[] sourceStr = binarySrc.toString().toCharArray(),
  106.                             keyStr = binaryKey.toString().toCharArray(),
  107.                             keyStr2 = binaryKey2.toString().toCharArray();
  108.  
  109.                     int counter = 0;
  110.                     for (int i = 0; i < sourceStr.length; i++) {
  111.                         if (counter >= keyStr.length) counter = 0;
  112.  
  113.                         if (sourceStr[i] == '1' && keyStr[counter] == '1') sourceStr[i] = '0';
  114.                         else if (sourceStr[i] == '0' && keyStr[counter] == '1') sourceStr[i] = '1';
  115.  
  116.                         counter++;
  117.                     }
  118.                     counter = 0;
  119.                     for(int i = 0; i < sourceStr.length; i++){
  120.                         if(counter >= keyStr2.length) counter = 0;
  121.  
  122.                         if (sourceStr[i] == '1' && keyStr2[counter] == '1') sourceStr[i] = '0';
  123.                         else if (sourceStr[i] == '0' && keyStr2[counter] == '1') sourceStr[i] = '1';
  124.                     }
  125.  
  126.                     StringBuilder answer = new StringBuilder();
  127.                     for (int i = 0; i < sourceStr.length - 1; i += 8) {
  128.                         int sum = 0;
  129.                         int idx = 0;
  130.                         for (int o = 7; o >= 0; o--) {
  131.                             if (sourceStr[i + o] == '1') {
  132.                                 sum += 1 << idx;
  133.                             }
  134.                             idx++;
  135.                         }
  136.                         System.out.println(sum);
  137.                         answer.append(Character.toChars(sum));
  138.                     }
  139.  
  140.                     labelAns.setText(String.valueOf(answer));
  141.                 }
  142.             }
  143.         });
  144.  
  145.     }
  146.  
  147.     public static void main(String[] args){
  148.         MainWindow win = new MainWindow();
  149.  
  150.     }
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement