Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.swing.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.KeyAdapter;
- import java.awt.event.KeyEvent;
- import java.util.Random;
- public class MainWindow extends JFrame {
- private JPanel mainPanel;
- private JTextField sourceField;
- private JTextField keyField;
- private JButton buttonOK;
- private JTextField labelAns;
- private JTextField keyField2;
- MainWindow(){
- setTitle("lab1");
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- setSize(400, 150);
- setLocationRelativeTo(null);
- setVisible(true);
- add(mainPanel);
- mainPanel.setVisible(true);
- Random random = new Random();
- int n = -1;
- while (n < 0){
- n = random.nextInt();
- }
- keyField.setText(String.valueOf(n));
- n = -1;
- while (n < 0){
- n = random.nextInt();
- }
- keyField2.setText(String.valueOf(n));
- sourceField.addKeyListener(new KeyAdapter() {
- @Override
- public void keyTyped(KeyEvent e) {
- char ch = e.getKeyChar();
- if(ch == KeyEvent.VK_ENTER){
- buttonOK.doClick();
- }
- }
- });
- keyField.addKeyListener(new KeyAdapter() {
- @Override
- public void keyTyped(KeyEvent e) {
- char ch = e.getKeyChar();
- if(!((ch >= '0') && (ch <= '9') || (ch == KeyEvent.VK_BACK_SPACE) || (ch == KeyEvent.VK_DELETE))){
- getToolkit().beep();
- e.consume();
- }
- }
- });
- keyField2.addKeyListener(new KeyAdapter() {
- @Override
- public void keyTyped(KeyEvent e) {
- char ch = e.getKeyChar();
- if(!((ch >= '0') && (ch <= '9') || (ch == KeyEvent.VK_BACK_SPACE) || (ch == KeyEvent.VK_DELETE))){
- getToolkit().beep();
- e.consume();
- }
- }
- });
- buttonOK.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if(sourceField.getText() != null && keyField.getText() != null && keyField2.getText() != null){
- byte[] bytesSrc = sourceField.getText().getBytes(), bytesKey = keyField.getText().getBytes(), bytesKey2 = keyField2.getText().getBytes();
- StringBuilder binarySrc = new StringBuilder();
- for (byte b : bytesSrc)
- {
- int val = b;
- for (int i = 0; i < 8; i++)
- {
- binarySrc.append((val & 128) == 0 ? 0 : 1);
- val <<= 1;
- }
- //binarySrc.append(' ');
- }
- StringBuilder binaryKey = new StringBuilder();
- for(byte b : bytesKey){
- int val = b;
- for(int i = 0; i < 8; i++){
- binaryKey.append((val & 128) == 0 ? 0 : 1);
- val <<= 1;
- }
- //binaryKey.append(' ');
- }
- StringBuilder binaryKey2 = new StringBuilder();
- for(byte b : bytesKey2){
- int val = b;
- for(int i = 0; i < 8; i++){
- binaryKey2.append((val & 128) == 0 ? 0 : 1);
- val <<= 1;
- }
- //binaryKey.append(' ');
- }
- char[] sourceStr = binarySrc.toString().toCharArray(),
- keyStr = binaryKey.toString().toCharArray(),
- keyStr2 = binaryKey2.toString().toCharArray();
- int counter = 0;
- for (int i = 0; i < sourceStr.length; i++) {
- if (counter >= keyStr.length) counter = 0;
- if (sourceStr[i] == '1' && keyStr[counter] == '1') sourceStr[i] = '0';
- else if (sourceStr[i] == '0' && keyStr[counter] == '1') sourceStr[i] = '1';
- counter++;
- }
- counter = 0;
- for(int i = 0; i < sourceStr.length; i++){
- if(counter >= keyStr2.length) counter = 0;
- if (sourceStr[i] == '1' && keyStr2[counter] == '1') sourceStr[i] = '0';
- else if (sourceStr[i] == '0' && keyStr2[counter] == '1') sourceStr[i] = '1';
- }
- StringBuilder answer = new StringBuilder();
- for (int i = 0; i < sourceStr.length - 1; i += 8) {
- int sum = 0;
- int idx = 0;
- for (int o = 7; o >= 0; o--) {
- if (sourceStr[i + o] == '1') {
- sum += 1 << idx;
- }
- idx++;
- }
- System.out.println(sum);
- answer.append(Character.toChars(sum));
- }
- labelAns.setText(String.valueOf(answer));
- }
- }
- });
- }
- public static void main(String[] args){
- MainWindow win = new MainWindow();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement