|
BIAESFrEnd |
|
/*
* ToDo:
*
*
*/
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.net.URL;
import java.io.*;
import java.util.zip.*;
/**
* BIAESFrEnd - Tim Tyler 2001.
*
* A front end for BIAES.<P>
* This code has been placed in the public domain.<P>
* You can do what you like with it.<P>
* Note that this code comes with no warranty.<P>
*
*/
public class BIAESFrEnd extends java.applet.Applet implements ActionListener {
static String document_base;
static String java_version;
static String directory_separator;
static URL base_url;
static Applet applet;
static Panel input, output, input1, input2, input3;
static Panel output1, output2, output3, output4, output5;
static Frame frame;
static boolean application = false;
final static boolean development_version = false;
// final static boolean compressed = true;
static int i=0, j=0, k=0, n=0;
static Checkbox checkbox_iv;
static TextField original_file_textfield;
static TextField encrypted_file_textfield;
static TextField decrypted_file_textfield;
static TextField key_textfield;
static Button original_file_button;
static Button encrypted_file_button;
static Button decrypted_file_button;
static Button encrypt_button;
static Button decrypt_button;
static BIAES biaes = new BIAES();
// constructor
public BIAESFrEnd() {
setLayout(new GridLayout(5,1));
Font std_font = new Font("Helevetica", Font.BOLD, 16);
output1 = new Panel();
output1.setBackground(Color.lightGray);
output2 = new Panel();
output2.setBackground(Color.lightGray);
output3 = new Panel();
output3.setBackground(Color.lightGray);
output4 = new Panel();
output4.setBackground(new Color(0xCFCFCF));
output5 = new Panel();
output5.setBackground(Color.lightGray);
Label label_temp;
Panel panel_original_file = new Panel();
label_temp = new Label(" Original file:", Label.RIGHT);
label_temp.setFont(std_font);
panel_original_file.add(label_temp);
original_file_textfield = new TextField("",66);
original_file_textfield.setFont(std_font);
panel_original_file.add(original_file_textfield);
original_file_button = new Button("Browse");
original_file_button.setFont(std_font);
original_file_button.addActionListener(this);
panel_original_file.add(original_file_button);
output1.add(panel_original_file);
Panel panel_encrypted_file = new Panel();
label_temp = new Label("Encrypted file:", Label.RIGHT);
label_temp.setFont(std_font);
panel_encrypted_file.add(label_temp);
encrypted_file_textfield = new TextField("",66);
encrypted_file_textfield.setFont(std_font);
panel_encrypted_file.add(encrypted_file_textfield);
encrypted_file_button = new Button("Browse");
encrypted_file_button.setFont(std_font);
encrypted_file_button.addActionListener(this);
panel_encrypted_file.add(encrypted_file_button);
output2.add(panel_encrypted_file);
Panel panel_decrypted_file = new Panel();
label_temp = new Label("Decrypted file:", Label.RIGHT);
label_temp.setFont(std_font);
panel_decrypted_file.add(label_temp);
decrypted_file_textfield = new TextField("",66);
decrypted_file_textfield.setFont(std_font);
panel_decrypted_file.add(decrypted_file_textfield);
decrypted_file_button = new Button("Browse");
decrypted_file_button.setFont(std_font);
decrypted_file_button.addActionListener(this);
panel_decrypted_file.add(decrypted_file_button);
output3.add(panel_decrypted_file);
Panel panel_key = new Panel();
label_temp = new Label("Key phrase:", Label.RIGHT);
label_temp.setFont(std_font);
panel_key.add(label_temp);
key_textfield = new TextField("Don't use this key phrase",55);
key_textfield.setFont(std_font);
panel_key.add(key_textfield);
output4.add(panel_key);
checkbox_iv = new Checkbox("Use an initial value");
checkbox_iv.setFont(std_font);
output4.add(checkbox_iv);
output5.setLayout(new GridLayout(1,2));
encrypt_button = new Button("Encrypt");
encrypt_button.setFont(std_font);
encrypt_button.addActionListener(this);
output5.add(encrypt_button);
decrypt_button = new Button("Decrypt");
decrypt_button.setFont(std_font);
decrypt_button.addActionListener(this);
output5.add(decrypt_button);
add(output1);
add(output2);
add(output3);
add(output4);
add(output5);
}
void enableButtons(boolean flag) {
encrypt_button.setEnabled(flag);
decrypt_button.setEnabled(flag);
}
public void actionPerformed(ActionEvent ev) {
if (ev.getSource() == encrypt_button) {
enableButtons(false);
try {
encrypt();
}
catch (RuntimeException e) {
Log.log("Error while encrypting:");
e.printStackTrace(Log.getPrintStream());
}
enableButtons(true);
}
if (ev.getSource() == decrypt_button) {
enableButtons(false);
try {
decrypt();
}
catch (RuntimeException e) {
Log.log("Error while decrypting:");
e.printStackTrace(Log.getPrintStream());
}
enableButtons(true);
}
if (ev.getSource() == encrypted_file_button) {
browseEncryptedFile();
}
if (ev.getSource() == decrypted_file_button) {
browseDecryptedFile();
}
if (ev.getSource() == original_file_button) {
browseOriginalFile();
}
}
void getDocBase() {
if (document_base == null) {
// get Java version...
java_version = System.getProperty("java.version");
directory_separator = System.getProperty("file.separator");
if (application) {
try {
document_base = System.getProperty("user.dir");
base_url = new URL("file:/" + document_base + directory_separator);
}
catch (Exception e2) {
Log.log("Error getting application base: " + e2.toString());
}
}
else
{
try {
// base_url = getDocumentBase(); // applet
base_url = getCodeBase(); // applet
document_base = base_url.toString();
String base_url_s = base_url.toString(); // applet
// trailing "."...?
if (base_url_s.indexOf("/.") > 0) {
Log.log("Warning: slash-fullstop in URL - truncating URL to avoid bug.");
document_base = document_base.substring(0, document_base.length() - 2);
base_url = new URL(base_url_s.substring(0, base_url_s.length() - 1));
}
}
catch (Exception e) {
Log.log("Error getting applet base: " + e.toString());
}
}
}
}
static void encrypt() {
String original_file = original_file_textfield.getText();
String encrypted_file = encrypted_file_textfield.getText();
String key_string = key_textfield.getText();
boolean iv = checkbox_iv.getState();
biaes.encrypt(original_file, encrypted_file, key_string, iv);
}
static void decrypt() {
String encrypted_file = encrypted_file_textfield.getText();
String decrypted_file = decrypted_file_textfield.getText();
String key_string = key_textfield.getText();
boolean iv = checkbox_iv.getState();
biaes.decrypt(encrypted_file, decrypted_file, key_string, iv);
}
static void browseOriginalFile() {
FileDialog fd = new FileDialog(frame, "Select file", FileDialog.LOAD);
fd.setFile("input.dat");
fd.show();
String returnedstring = fd.getFile();
if (returnedstring != null) {
if (!returnedstring.equals("")) {
original_file_textfield.setText(fd.getDirectory() + returnedstring);
}
}
}
static void browseEncryptedFile() {
FileDialog fd = new FileDialog(frame, "Select file", FileDialog.LOAD);
fd.setFile("input.dat");
fd.show();
String returnedstring = fd.getFile();
if (returnedstring != null) {
if (!returnedstring.equals("")) {
encrypted_file_textfield.setText(fd.getDirectory() + returnedstring);
}
}
}
static void browseDecryptedFile() {
FileDialog fd = new FileDialog(frame, "Select file", FileDialog.LOAD);
fd.setFile("output.dat");
fd.show();
String returnedstring = fd.getFile();
if (returnedstring != null) {
if (!returnedstring.equals("")) {
decrypted_file_textfield.setText(fd.getDirectory() + returnedstring);
}
}
}
public static void main(String args[]) {
application = true;
BIAESFrEnd applet = new BIAESFrEnd();
frame = new TTAppletFrame("BIAES",(Applet)applet,850,288);
Image image = frame.createImage(29,29);
Graphics g = image.getGraphics();
g.setColor(Color.black);
g.fillRect(0,0,30,30);
g.setColor(Color.yellow);
g.drawRect(0,0,28,28);
for (int i = 1; i < 14; i++) {
int temp = i * 14;
g.setColor(new Color((temp << 8) | (temp ^ 0xFF)));
g.drawRect(i,i,28 - i - i,28 - i - i);
}
frame.setIconImage(image);
}
}
|
BIAESFrEnd |
|