Top

Encryptor/Decryptor (Caesar Cipher)


Java Code
+ 2 likes
Please Register to submit score.
Bookmark and Share
Average Score  6.5 (of 2 scores)
Date Added  Jul 16, 2009
Last Updated  Jul 16, 2009
Tags  caesar  cipher  decode  decrypt  encode  encrypt  java  swing  text 

Introduction

This is a Swing java program that uses the Caesar Cipher method to encrypt or decrypt text. And I used the GridBagLayout layout manager so I got some practice with that.

"It is a type of substitution cipher in which each letter in the plaintext is replaced by a letter some fixed number of positions down the alphabet"

Here's an image that encrypts with a key of 2:



Here's some screens:





Grab the Code

/*
 * CaesarCipher.java
 * Encrypts/Decrypts text using the Caesar Cipher method
 * Made by MountainDew
 */
 
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
public class CaesarCipher extends JFrame implements ActionListener {
 
    private static JLabel        msgLabel        = new JLabel("Message: ");
    private static JLabel        keyLabel        = new JLabel("Key: ");
    private static JLabel        actionLabel     = new JLabel("Action: ");
    private static JLabel        resultLabel     = new JLabel("Result: ");
    private static JTextField    msgTextField    = new JTextField(20);
    private static JTextField    resultTextField = new JTextField(20);
    private static JSpinner      keySpinner      = new JSpinner( new SpinnerNumberModel(3, 1, 25, 1) );
    private static JRadioButton  encryptRadio    = new JRadioButton("Encrypt");
    private static JRadioButton  decryptRadio    = new JRadioButton("Decrypt");
    private static JButton       actionButton    = new JButton("Encrypt Message");
    private static JPanel        panel           = new JPanel();
    private static ButtonGroup   group           = new ButtonGroup();
 
    public static void main(String[] args) {
	new CaesarCipher();
    }
 
    public CaesarCipher() {
    	this.setSize(310, 192);
    	this.setTitle("Caesar Cipher");
    	this.setLocationRelativeTo(null);
    	this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    	this.setResizable(false);
 
    	panel.setLayout(new GridBagLayout());
 
    	addComponent(panel, msgLabel, 0, 0, 1, 1, GridBagConstraints.LINE_START);
    	addComponent(panel, msgTextField, 1, 0, 2, 1, GridBagConstraints.LINE_START);
 
    	addComponent(panel, keyLabel, 0, 1, 1, 1, GridBagConstraints.LINE_START);
    	addComponent(panel, keySpinner, 1, 1, 1, 1, GridBagConstraints.LINE_START);
 
    	addComponent(panel, actionLabel, 0, 2, 1, 1, GridBagConstraints.LINE_START);
    	group.add(encryptRadio);
    	group.add(decryptRadio);
    	addComponent(panel, encryptRadio, 1, 2, 1, 1, GridBagConstraints.LINE_START);
    	addComponent(panel, decryptRadio, 2, 2, 1, 1, GridBagConstraints.LINE_START);
    	encryptRadio.setSelected(true);
    	encryptRadio.addActionListener(this);
    	decryptRadio.addActionListener(this);
 
    	addComponent(panel, resultLabel, 0, 3, 1, 1, GridBagConstraints.LINE_START);
    	addComponent(panel, resultTextField, 1, 3, 2, 1, GridBagConstraints.LINE_START);
    	resultTextField.setEditable(false);
 
    	addComponent(panel, actionButton, 1, 4, 1, 1, GridBagConstraints.CENTER);
    	actionButton.addActionListener(this);
 
    	this.add(panel);
    	this.setVisible(true);
    }
 
    private void addComponent(JPanel p, JComponent c, int x, int y, int width, int height, int align) {
    	GridBagConstraints gc = new GridBagConstraints();
    	gc.gridx = x;
    	gc.gridy = y;
    	gc.gridwidth = width;
    	gc.gridheight = height;
    	gc.weightx = 100.0;
    	gc.weighty = 100.0;
    	gc.insets = new Insets(5, 5, 5, 5);
    	gc.anchor = align;
    	gc.fill = GridBagConstraints.NONE;
    	p.add(c, gc);
    }
 
    private void encryptMessage(String msg, int k) {
    	String result = "";
    	resultTextField.setText("");
    	for (int i = 0; i < msg.length(); i++)
    		result += encryptChar(msg.charAt(i), k);
    	resultTextField.setText(result);
    }
 
    private char encryptChar(char c, int k) {
    	if (Character.isLetter(c))
    		return (char) ('A' + (c - 'A' + k) % 26);
    	else
    		return c;
    }
 
    public void actionPerformed(ActionEvent e) {
    	if (e.getSource() == encryptRadio)
    		actionButton.setText("Encrypt Message");
 
    	if (e.getSource() == decryptRadio)
    		actionButton.setText("Decrypt Message");
 
    	if (e.getSource() == actionButton) {
    		String str = msgTextField.getText();
    		int k = (Integer) keySpinner.getValue();
    		int key = 0;
    		String message = "";
 
    		if (str.equals("")) {
    			JOptionPane.showMessageDialog(null, "Please enter a message!", "Error!", JOptionPane.ERROR_MESSAGE);
    			msgTextField.requestFocus();
    			return;
    		}
 
    		message = str.toUpperCase();
    		if (encryptRadio.isSelected())
    			key = k;
    		else
    			key = 26 - k;
 
    		encryptMessage(message, key);
    	}
    }
}

Comments

  (7)  RSS
zNigel-
Comments: 27
 
Java Snippet:  Encryptor/Decryptor (Caesar Cipher)
Posted on Jul 16, 2009 9:53 pm
wow.. Looks really nice and can come handy for me sometimes :) +like
Aucun50
Comments: 548
 
Java Snippet:  Encryptor/Decryptor (Caesar Cipher)
Posted on Jul 17, 2009 8:18 am
The encrypt almost looks like a keygen for a game :)
Hawkee
Comments: 1,039
 
Java Snippet:  Encryptor/Decryptor (Caesar Cipher)
Posted on Jul 17, 2009 2:31 pm
While the encryption is fairly simple, its a nice example of how to build a Java GUI.
mountaindew
Comments: 1,826
 
Java Snippet:  Encryptor/Decryptor (Caesar Cipher)
Posted on Jul 17, 2009 2:37 pm
Yeah that's mainly why I did it, to get some practice with Swing and the layout managers.
asakura
Comments: 66
 
Java Snippet:  Encryptor/Decryptor (Caesar Cipher)
Posted on Aug 2, 2009 5:08 pm
ehh
if you wanna bitch about someone do it in pm ;) lol
mountaindew
Comments: 1,826
 
Java Snippet:  Encryptor/Decryptor (Caesar Cipher)
Posted on Aug 3, 2009 6:55 pm
Quote:

ehh
if you wanna bitch about someone do it in pm ;) lol

What are you talking about?
asakura
Comments: 66
 
Java Snippet:  Encryptor/Decryptor (Caesar Cipher)
Posted on Aug 5, 2009 6:28 pm
lol dw you dont get it :D

daymn thats cool

me myself am lazy n would of just used $replace :D but you know :D

Commenting Options

Register or Login to Hawkee.com or use your Facebook or Twitter account by clicking the corresponding button below.

  
Bottom