Upload
yuvraj-deshmukh
View
46
Download
3
Embed Size (px)
Citation preview
Decrypted the File
Source code:
package com.ksh2.crypt;
/** * * @author Administrator */
import java.util.*;import java.io.*;import com.ksh2.crypt.Blowfish;import com.ksh2.crypt.BlowKey;import com.ksh2.crypt.BlowCipher;import java.security.KeyException;import com.ksh2.crypt.CipherMethods;import com.ksh2.crypt.PasswordDialog;import javax.swing.*;import java.awt.event.*;import com.ksh2.crypt.MessageDialog;import com.ksh2.crypt.CryptFilter;import com.ksh2.crypt.YesNoDialog;
/* *KSHCoder is the main class of the project.
*It serves as the main GUI and as well coordinates the actions of al the other clases in the project. *It contains two sub classes, namely: *EmailFile: That handles the tranfer of the encrypted/decrypted file via email *MonitorCipher a class that monitors the progress of the encryption/decryption operation */
public class KSHCoder extends javax.swing.JFrame { protected JFileChooser eChooser; protected JFileChooser dChooser; private static File inputFile; protected JFileChooser pChooser; protected PipedInputStream in; protected File eFile; protected File dFile; protected MessageDialog md; private CryptFilter cFilter; protected int state; private static String keyString; File outDirectory; public String outString; /** Creates new form KSHCoder */ public KSHCoder() { initComponents(); eChooser =new JFileChooser(); dChooser =new JFileChooser(); pChooser=new JFileChooser(); statusDisplay.setEditable(false); cFilter=new CryptFilter("enc","KSHCoder encrypted Files"); eChooser.setDialogTitle("Select File For Encrypting "); dChooser.setDialogTitle("Select File For Decrypting "); dChooser.setFileFilter(cFilter); pChooser.setDialogTitle("Select The Output Directory "); eFile=null; dFile=null; outString="Ready"; md=new MessageDialog(this,true); pack(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents encryptButton = new javax.swing.JButton(); decryptButton = new javax.swing.JButton(); samePathCheck = new javax.swing.JCheckBox(); deleteCheck = new javax.swing.JCheckBox(); jLabel1 = new javax.swing.JLabel(); jPanel1 = new javax.swing.JPanel(); statusDisplay = new javax.swing.JTextArea(); closeButton = new javax.swing.JButton();
getContentPane().setLayout(new java.awt.FlowLayout());
setTitle("KSHCoder"); setName("kshCoderFrame"); setResizable(false); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } });
encryptButton.setToolTipText("Click to start encryption"); encryptButton.setLabel("Encrypt"); encryptButton.setName("encryptButton"); encryptButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { encryptButtonActionPerformed(evt); } });
getContentPane().add(encryptButton);
decryptButton.setLabel("Decrypt"); decryptButton.setName("decryptButton"); decryptButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { decryptButtonActionPerformed(evt); } });
getContentPane().add(decryptButton);
samePathCheck.setText("Encrypt/Decrypt to Same Folder?"); samePathCheck.setPreferredSize(new java.awt.Dimension(220, 24));
getContentPane().add(samePathCheck);
deleteCheck.setText("Delete Plain File After Encryption?"); deleteCheck.setPreferredSize(new java.awt.Dimension(220, 24)); getContentPane().add(deleteCheck);
jLabel1.setFont(new java.awt.Font("Dialog", 1, 10)); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel1.setText("View Status"); jLabel1.setPreferredSize(new java.awt.Dimension(200, 16)); getContentPane().add(jLabel1);
jPanel1.setPreferredSize(new java.awt.Dimension(300, 200)); statusDisplay.setEditable(false); statusDisplay.setLineWrap(true); statusDisplay.setRows(500); statusDisplay.setWrapStyleWord(true); statusDisplay.setPreferredSize(new java.awt.Dimension(300, 8000)); jPanel1.add(statusDisplay);
getContentPane().add(jPanel1);
closeButton.setLabel("Close"); closeButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { closeButtonActionPerformed(evt); } });
getContentPane().add(closeButton);
pack(); }//GEN-END:initComponents private void closeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeButtonActionPerformed // Add your handling code here: this.setVisible(false); System.exit(0); }//GEN-LAST:event_closeButtonActionPerformed //returns the key string public static String getKeyString(){ return keyString; }
//sets the key string public static void setKeyString(String kString){ keyString=kString; } private void encryptButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_encryptButtonActionPerformed // Add your handling code here: int vVal=0; int rVal=0; state=CipherMethods.ENCRYPT; outString="\n"+"Ready"+"\n"; PasswordDialog pDialog= new PasswordDialog(this,true); rVal=eChooser.showOpenDialog(this); if (rVal==JFileChooser.APPROVE_OPTION){ inputFile=eChooser.getSelectedFile(); pChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); if(this.samePathCheck.isSelected()){ outDirectory=new File(inputFile.getParent()); }else{ vVal=pChooser.showOpenDialog(this); outDirectory=pChooser.getSelectedFile(); } pDialog.show(); System.out.println("key from coder is "+keyString); //pass the input file to the Cipher Methods class for encryption CipherMethods cipherm=new CipherMethods(inputFile,outDirectory,keyString,state,deleteCheck.isSelected()); //Start the Monitor cipher class to monitor the progress of the ecryption operation MonitorCipher mc=new MonitorCipher(cipherm); cipherm.start(); mc.start(); } }//GEN-LAST:event_encryptButtonActionPerformed private void decryptButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_decryptButtonActionPerformed // Add your handling code here: int rVal=0; int vVal=0;
outString="\n"+"Ready"+"\n"; state=CipherMethods.DECRYPT; PasswordDialog pDialog= new PasswordDialog(this,true); rVal=dChooser.showOpenDialog(this); if (rVal==JFileChooser.APPROVE_OPTION){ inputFile=dChooser.getSelectedFile(); pChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); if(this.samePathCheck.isSelected()){ outDirectory=new File(inputFile.getParent()); }else{ vVal=pChooser.showOpenDialog(this); outDirectory=pChooser.getSelectedFile(); } pDialog.show(); //pass the input file to the Cipher Methods class for decryption CipherMethods cipherm=new CipherMethods(inputFile,outDirectory,keyString,state,deleteCheck.isSelected()); //Start the Monitor cipher class to monitor the progress of the ecryption operation MonitorCipher mc=new MonitorCipher(cipherm); cipherm.start(); mc.start(); } }//GEN-LAST:event_decryptButtonActionPerformed /** Exit the Application */ private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm System.exit(0); }//GEN-LAST:event_exitForm /** * @param args the command line arguments */ public static void main(String args[]) { KSHCoder k=new KSHCoder(); k.setSize(330,410); k.show(); }
// Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JCheckBox samePathCheck; private javax.swing.JLabel jLabel1; private javax.swing.JTextArea statusDisplay; private javax.swing.JButton encryptButton; private javax.swing.JPanel jPanel1; private javax.swing.JButton closeButton; private javax.swing.JButton decryptButton; private javax.swing.JCheckBox deleteCheck; // End of variables declaration//GEN-END:variables /** Holds value of property userName. */ private static String userName; /** Holds value of property password. */ private static String password; class MonitorCipher extends Thread{ protected PipedInputStream in,dialogIn; protected PipedOutputStream out; protected int cipherStatus=1000000000; protected YesNoDialog yn; private boolean stop; int c; public MonitorCipher(CipherMethods cm){ System.out.println("Starting MonitorCipher initialization"); outString+="Starting MonitorCipher initialization"+"\n"; statusDisplay.setText(outString); yn=new YesNoDialog(); //initialize and connect to the io streams that are used to communicate with the Ciphermethods class through the writing of tokens. try{ in=new PipedInputStream(cm.out); out=new PipedOutputStream(cm.in); dialogIn=new PipedInputStream(yn.getOut()); System.out.println("Finished MonitorCipher connection"); outString+="Finished MonitorCipher connection"+"\n"; statusDisplay.setText(outString); }catch(IOException e){ System.err.println(e.toString());
} stop=false; } public synchronized void stopMonitorCipher(){ try{ in.close(); out.close(); dialogIn.close(); }catch(IOException e){} stop=true; } //This method evaluates the token read from the input stream connected to the Cipher Methods class. // so as to determine the sate of the encryption/ decryption operation //via the io streams protected void evaluateStatus(){ switch(cipherStatus){ case CipherMethods.FILE_EXISTS: yn.setDialogLabel("Output File already exists. Overwrite it?"); yn.setVisible(true); try{ int d=dialogIn.read(); System.out.println("d= "+d); out.write(d); }catch(IOException e){} break; case CipherMethods.OPERATION_STARTED: if(state==CipherMethods.ENCRYPT) synchronized(outString){ outString+="\n"+"Encrypting "+inputFile.getName()+"..."; statusDisplay.setText(outString); } else synchronized(outString){ outString+="\n"+"Decrypting "+inputFile.getName()+"..."; statusDisplay.setText(outString); } break; case CipherMethods.OPERATION_ENDED: cipherStatus=100000000; synchronized(outString){ outString+="\n"+"Finished "+inputFile.getName(); statusDisplay.setText(outString);
} stopMonitorCipher(); break; case CipherMethods.OPERATION_ABORTED: cipherStatus=100000000; synchronized(outString){ outString+="\n"+"OPERATION ABORTED"; statusDisplay.setText(outString); } stopMonitorCipher(); break; } } public void run(){ while(!stop){ readFromInput(); System.out.println("CipherStatus from run is ="+cipherStatus); evaluateStatus(); } } //reads from the input stream so as to determine the current state of the encryption / decryption process protected synchronized void readFromInput(){ int i=0; try{ while((c=in.read())!=CipherMethods.EOL){ //if(c!=null) cipherStatus=c; //System.out.println("CipherStatus from read is ="+c); } }catch(IOException e){ md.setDialogLabel("IO error in reading from PipedInputStream"); md.show(); outString+=e.getMessage()+"\n"; statusDisplay.setText(outString); e.printStackTrace(); return; } } } }