An easy, terribly written but working, Caeasar (Monoalphabetic) cipher implementation, with a GUI (Graphical User Interface).
Cipher.java
class Cipher {
static final String alphabet = "abcdefghijklmnopqrstuvwxyz";
public static char shift(char ch, int amount) {
return alphabet.charAt((alphabet.indexOf(ch) + amount) % alphabet.length());
}
public static String caesarCipher(String text, int amount) {
String result = "";
for (char ch : text.toCharArray()) {
if (alphabet.indexOf(ch) >= 0) {
result += shift(ch, amount);
}
}
return result;
}
public static void main(String[] args) {
assert shift('a', 1) == 'b';
assert shift('z', 2) == 'b';
assert caesarCipher("abc", 2).equals("cde");
}
}
Gui.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Gui {
private static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("HelloWorldSwing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel body = new JPanel();
final JTextField label = new JTextField("aaaaaaaaaaaaaaaaaaaaaaa");
body.add(label);
final JTextField key = new JTextField("1");
body.add(key);
final JTextField result = new JTextField("bbbbbbbbbbbbbbbbbbbbbb");
JButton activationButton = new JButton("Encrypt");
activationButton.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent ae)
{
String plainText = label.getText();
String keyval = key.getText();
result.setText(Cipher.caesarCipher(plainText, Integer.parseInt(keyval)));
}
});
body.add(activationButton);
body.add(result);
frame.add(body);
//Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}