Престановочный шифр - Java
Формулировка задачи:
Здравствуйте.
Очень нужна помощь по коду.
Мне нужно сделать программку, которая будет шифровать текст перестановочным шифром.
Вот, например, окно программы.
При вводе в первое поле текста, а во второе - ключа и нажатии на кнопку shifr, в третьем поле должно появиться зашифрованное сообщение. (ну с этим понятно)
Смысл шифра заключается в следующем.
Есть ключ, состоящий из 23 символов.
1, 7, 13, 19, 2, 8, 14, 20, 3, 9, 15, 21, 4, 10, 16, 22, 5, 11, 17, 23, 6, 12, 18
Т.е. цыфры идут как бы группа по 4 числа, к первому прибавляется 6.
Т.е. 1+6=
7
, 7+6=13
, 13+6=19
(последовательность какончилась) дальше 2+6=8
, 8+6=14
, 14+6=20
и так далее. Отсюда и получается ключ Т.е. например фраза «это шифр древней спарты», будет зашифровано как «эфвптрнао ер дйтшр ыиес» 1 7 13 19 Можете подсказать, как такую чтуку уже на java сделать, хотябы примерно! Заранее благодарен!package zxc; import javax.swing.*; public class window extends JFrame { public window(){ super("name"); JPanel content = new JPanel(); content.setLayout(null); JLabel first = new JLabel("text"); first.setBounds(10,40,95,21); JLabel second = new JLabel("key"); second.setBounds(10,125,95,21); JLabel third = new JLabel("completed"); third.setBounds(10,210,95,21); final JTextArea f = new JTextArea(); f.setBounds(10,65,120,21); f.setSize(250,50); final JTextArea s = new JTextArea(); s.setBounds(10,150,120,21); s.setSize(250,50); final JTextArea t = new JTextArea(); t.setBounds(10,235,120,21); t.setSize(250,50); JButton one = new JButton("shifr"); one.setBounds(100,125,75,21); one.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { button1actionActionPerformed(evt); } private void button1actionActionPerformed(java.awt.event.ActionEvent evt) { char[] key = s.getText().toLowerCase().toCharArray(); char[] text = f.getText().toLowerCase().toCharArray(); if (key.length >= text.length){ t.setText(new String(text)); } else JOptionPane.showMessageDialog(null, "Длинна текста не может быть длинее ключа!"); }}); JButton two = new JButton("deshifr"); two.setBounds(170,125,75,21); content.add(first); content.add(second); content.add(third); content.add(f); content.add(s); content.add(t); content.add(one); content.add(two); setSize(270,300); setDefaultCloseOperation(EXIT_ON_CLOSE); setContentPane(content); } public static void main(String[] args) { window set = new window(); set.setVisible(true); } }
Решение задачи: «Престановочный шифр»
textual
Листинг программы
import java.io.IOException; public class Main { public static void main(String[] args) { String str = "это шифр древней спарты"; int i = 0, k = 0, key = 6, size = str.length(); char src[] = str.toCharArray(); char dest[] = new char[size]; do { System.out.print(k + " "); dest[i] = src[k]; k += key; k %= size; ++i; } while (i < size); System.out.println(String.valueOf(dest)); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д