Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 22
1

Проблема с выводом

17.03.2019, 22:39. Показов 1383. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравуствуйте, при создании одной програмы(которая шифрует текст, выводит зашифрованый текст, а потом выводит расшифрованый текст), столкнулся с проблемой.
Текст выводиться весьма странным образом, перед текстом стоит null, потом он віводиться совсем странно. Я новичек, предполагаю, что проблема елементарная, но понять в чем она не могу.
Ах да, это програма с GUI, вот к слову код самого окна.
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
import java.awt.EventQueue;
import java.awt.TextArea;
 
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.swing.*;
import javax.swing.text.BadLocationException;
 
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.FlowLayout;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Scanner;
 
 
public class Frame {
 
    private JFrame frame;
    public String Line;
    crypt crypt = new crypt();
    
 
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Frame window = new Frame();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
 
    public Frame() {
        initialize();
        NewMetod();
    }
 
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 646, 411);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                
    }
    public void NewMetod(){
        JPanel JPanel = new JPanel();
        JPanel.setBounds(0, 0, 630, 373);
        frame.getContentPane().add(JPanel);
        frame.getContentPane().setLayout(null);
        JPanel.setLayout(null);
        JScrollPane scrollpane = new JScrollPane();
        scrollpane.setBounds(20, 36, 179, 180);
        JPanel.add(scrollpane);
        JTextArea TA = new JTextArea();
        scrollpane.setViewportView(TA);
        //frame.getContentPane().add(TA);
        TA.setLineWrap(true);
        JScrollPane scrollpane1 = new JScrollPane();
        scrollpane1.setBounds(209, 36, 179, 180);
        JPanel.add(scrollpane1);
        
        JTextArea jtextArea = new JTextArea();
        scrollpane1.setViewportView(jtextArea);
        //frame.getContentPane().add(jtextArea);
        jtextArea.setLineWrap(true);
        JScrollPane scrollpane2 = new JScrollPane();
        scrollpane2.setBounds(398, 36, 163, 180);
        JPanel.add(scrollpane2);
        
        JTextArea jtextArea_1 = new JTextArea(5, 20);
        scrollpane2.setViewportView(jtextArea_1);
        //frame.getContentPane().add(jtextArea_1);
        jtextArea_1.setLineWrap(true);
        
        JButton btnGo = new JButton("Go");
        btnGo.setBounds(260, 227, 56, 23);
        JPanel.add(btnGo);
        btnGo.addActionListener(new ActionListener() {
            @SuppressWarnings("static-access")
            public void actionPerformed(ActionEvent e) {
                crypt.EncryptResult = null;
                crypt.DecryptResult = null;
                try {
                int row = TA.getLineCount();
                for(int j=0; j<row; j++){
                    int end = TA.getLineEndOffset(j);
                    String line = TA.getText(0, end);
                    crypt.RawLine = line;
                    crypt.crypTo();
                    jtextArea.append(crypt.EncryptResult);
                    jtextArea.append("\n");
                    jtextArea_1.append(crypt.DecryptResult);
                    jtextArea_1.append("\n");
                    }
                } catch (InvalidKeyException e1) {
                    e1.printStackTrace();
                } catch (NoSuchAlgorithmException e1) {
                    e1.printStackTrace();
                } catch (NoSuchPaddingException e1) {
                    e1.printStackTrace();
                } catch (IllegalBlockSizeException e1) {
                    e1.printStackTrace();
                } catch (BadPaddingException e1) {
                    e1.printStackTrace();
                } catch (BadLocationException e1) {
                    e1.printStackTrace();
                }
            }
        });
 
        
        
        JButton btnGhbdhsj = new JButton("Clear");
        btnGhbdhsj.setBounds(61, 227, 89, 23);
        JPanel.add(btnGhbdhsj);
        btnGhbdhsj.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                jtextArea.setText(null);
                jtextArea_1.setText(null);
            }
        });
        
        
    }
}


Есть 3 текстовых поля, в первое вводиться простой текст, при нажатии клавиши "Go", во втором выводиться зашифрованый текст, а в третьем уже расшифрованый.
Код класса что выполняет шифрование

Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
 
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
 
 
public class crypt {
    
    static String RawLine;
    static String EncryptResult;
    static String DecryptResult;
    
    public static void crypTo() throws NoSuchAlgorithmException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException, InvalidKeyException {
        
        Cipher encryptcipher = Cipher.getInstance("AES");
        KeyGenerator kgen = KeyGenerator.getInstance("AES");
        kgen.init(128);
        SecretKey key = kgen.generateKey();
        
            encryptcipher.init(Cipher.ENCRYPT_MODE, key);
            byte[] bytes= encryptcipher.doFinal(RawLine.getBytes());
            for(byte b : bytes){
                EncryptResult += Character.toString((char) b);
            }
            Cipher decryptcipher = Cipher.getInstance("AES");
            decryptcipher.init(Cipher.DECRYPT_MODE, key);
            byte [] decryptedBytes = decryptcipher.doFinal(bytes);
            for(byte b : decryptedBytes){
                DecryptResult += Character.toString((char) b);
            }
    }
}


Тектс шифруеться с помощью алгоритма AES, береться введенная строка, передается в клас шифровки, переводится в байты, применятся ключ, ну и так дальше.
Вроде все должно работать, но вот не задача...
Проблема с выводом
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.03.2019, 22:39
Ответы с готовыми решениями:

Проблема с выводом
Когда программа завершается завершается признаком конца ввода ( сочетание ctrl + d) вместе с...

Проблема с выводом
Здравствуйте.Приношу извинения за банальный вопрос,но ,к сожалению, никак не могу разобраться...

Проблема с выводом
Есть кусок текста, который надо проанализировать. Решил запихнуть текст в переменную. Проблема в...

Проблема с выводом на печать
ВыбратьГруппуДистрибьютора(ТекДистриб); ВычислитьОПпоГруппе(РегПродажи); ПечДистрибьютор =...

5
0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 22
17.03.2019, 23:06  [ТС] 2
Не отметил, введение строки в другой класс начинаеться со строки 85
0
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
17.03.2019, 23:58 3
в классе crypt, ты должен перед тем, как прибавлять к переменным
EncryptResult
DecryptResult
присвоить им "";

Java
1
2
3
4
5
6
7
8
...
    encryptcipher.init(Cipher.ENCRYPT_MODE, key);
    EncryptResult = "";
    byte[] bytes= encryptcipher.doFinal(RawLine.getBytes());
            for(byte b : bytes){
                EncryptResult += Character.toString((char) b);
            }
...
с другой переменной также. Ибо они статические и равны null первоначально.

Добавлено через 13 минут
либо, у тебя в классе Frame в строке 86 и 87 ты сам им присваиваешь null, а потом к null прибавляешь символы...

убери присвоение null и можешь тут присвоить им не null, а ""
1
0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 22
18.03.2019, 00:10  [ТС] 4
Благодарен, это убрало вывод null, но вот что делать дальше?
С этим...
Миниатюры
Проблема с выводом  
0
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
18.03.2019, 01:57 5
Лучший ответ Сообщение было отмечено BublleBoom как решение

Решение

переделал я тебе полностью класс Crypt и код слушателя кнопки Go

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
import java.awt.EventQueue;
import javax.crypto.spec.SecretKeySpec;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.security.*;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.xml.bind.DatatypeConverter;
 
public class Frame {
 
    private JFrame frame;
    public String Line;
 
 
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Frame window = new Frame();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
 
    public Frame() {
        initialize();
        NewMetod();
    }
 
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 646, 411);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
    }
 
    public void NewMetod() {
        JPanel JPanel = new JPanel();
        JPanel.setBounds(0, 0, 630, 373);
        frame.getContentPane().add(JPanel);
        frame.getContentPane().setLayout(null);
        JPanel.setLayout(null);
        JScrollPane scrollpane = new JScrollPane();
        scrollpane.setBounds(20, 36, 179, 180);
        JPanel.add(scrollpane);
        JTextArea TA = new JTextArea();
        scrollpane.setViewportView(TA);
        //frame.getContentPane().add(TA);
        TA.setLineWrap(true);
        JScrollPane scrollpane1 = new JScrollPane();
        scrollpane1.setBounds(209, 36, 179, 180);
        JPanel.add(scrollpane1);
 
        JTextArea jtextArea = new JTextArea();
        scrollpane1.setViewportView(jtextArea);
        //frame.getContentPane().add(jtextArea);
        jtextArea.setLineWrap(true);
        JScrollPane scrollpane2 = new JScrollPane();
        scrollpane2.setBounds(398, 36, 163, 180);
        JPanel.add(scrollpane2);
 
        JTextArea jtextArea_1 = new JTextArea(5, 20);
        scrollpane2.setViewportView(jtextArea_1);
        //frame.getContentPane().add(jtextArea_1);
        jtextArea_1.setLineWrap(true);
 
        JButton btnGo = new JButton("Go");
        btnGo.setBounds(260, 227, 56, 23);
        JPanel.add(btnGo);
        btnGo.addActionListener(new ActionListener() {
            @SuppressWarnings("static-access")
            public void actionPerformed(ActionEvent e) {
                Crypt crypt = new Crypt("AES", 128, "qwerty");
                try {
                    String[] lines = TA.getText().split("\n");
                    for (String line : lines) {
                        String encrypt = crypt.encrypt(line);
                        String decrypt = crypt.decrypt(encrypt);
                        jtextArea.append(encrypt);
                        jtextArea.append("\n");
                        jtextArea_1.append(decrypt);
                        jtextArea_1.append("\n");
                    }
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
            }
        });
 
 
        JButton btnGhbdhsj = new JButton("Clear");
        btnGhbdhsj.setBounds(61, 227, 89, 23);
        JPanel.add(btnGhbdhsj);
        btnGhbdhsj.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                jtextArea.setText(null);
                jtextArea_1.setText(null);
            }
        });
    }
}
 
class Crypt {
    private final String code;
    private final int key;
    private final byte[] password;
 
    public Crypt(String code, int key, String password) {
        this.code = code;
        this.key = key;
        this.password = password.getBytes();
    }
 
    private byte[] getKey() {
        KeyGenerator generator;
        SecretKey secretKey = null;
        try {
            SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
            sr.setSeed(this.password);
            generator = KeyGenerator.getInstance(this.code);
            generator.init(this.key, sr);
            secretKey = generator.generateKey();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return secretKey != null ? secretKey.getEncoded() : new byte[0];
    }
 
    public String encrypt(String line) {
        byte[] encrypt = new byte[0];
        try {
            Cipher cipher = Cipher.getInstance(this.code);
            SecretKeySpec keySpec = new SecretKeySpec(getKey(), this.code);
            cipher.init(Cipher.ENCRYPT_MODE, keySpec);
            encrypt = cipher.doFinal(line.getBytes());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return DatatypeConverter.printBase64Binary(encrypt);
    }
 
    public String decrypt(String encrypt) {
        byte[] decrypt = new byte[0];
        try {
            Cipher cipher = Cipher.getInstance(this.code);
            SecretKeySpec keySpec = new SecretKeySpec(getKey(), this.code);
            cipher.init(Cipher.DECRYPT_MODE, keySpec);
            decrypt = cipher.doFinal(DatatypeConverter.parseBase64Binary(encrypt));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return new String(decrypt);
    }
}
1
0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 22
18.03.2019, 10:19  [ТС] 6
Пока что, сижу рассмастриваю ваш код, все работает, стараюсь понять, спасибо
0
18.03.2019, 10:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2019, 10:19
Помогаю со студенческими работами здесь

Проблема с выводом графики
Доброго времени суток, товарищи! Помогите мне избавиться от проблемы. У меня есть класс class...

Проблема с выводом на экран
При выполнении программы значения периметра, площади, углов и максимальную площадь выводит ноль,...

Проблема с выводом даты.
Использую формат mm.dd.yy. Операции вроде нормально проходят, запись и вывод происходят корректно,...

Проблема с выводом данных
Хочу вывести все покупки за месяц.Для этого создал класс Shopping. Хочу чтобы данные добавлялись...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru