CIS 3020 Project 5

From In The Wings
Jump to navigation Jump to search

Code

Cipher.java

import java.lang.String;

public class Cipher {

  //output string that holds encrypted message
  private String output = new String();
  //replacement letter for encryption (changes often!)
  private String replacement = new String();
  //how to know when to stop trying to replace letters
  private int keyLen = 0;


  
  private void clearOutput(){
    //clear this.output
    this.output = "";
  }
   
  public String getOutput(){
    //return output
    return(this.output);
  }

  public String encipher (String encode, String key, String message){
    //reset this.output
    clearOutput();
    //determine key length
    this.keyLen = (key.length()-1);
    //return the encoded message
    return(encode(encode, key, message));
  }

  private String encode(String encode, String key, String message) {
    //is there anything left to encode?
    if (message.length() != 0) {
     // Get the first character in the initiator string.
      //the following two lines (3 lines if you really want to,
      //but letterReplacement would have to return this.replacement)
      //could have been combined but weren't for clarity.
      String letter = message.substring(0, 1);
      //replace letter with encrypted letter
      letterReplacement(letter, encode, key, 0);
        //concatenate output with encoded letter     
        this.output = this.output.concat(this.replacement);
        //repeat for next letter
        encode(encode, key, message.substring(1));
     } //end if
   //end big if (length != 0)
    return (this.output);
  }//end next generation

private void letterReplacement(String letter, String encode, String key, int n){

  //don't go out of bounds!
  if (n<=this.keyLen){
    //try to replace letter with encoded character
    this.replacement = letter.replace(encode.charAt(n),key.charAt(n));
    //did replacement succeed?
    if (this.replacement.equals(letter)){
      //if not, try again
      letterReplacement(letter, encode, key, n+1);
    }
  }
}
}

CipherDemo.java

public class CipherDemo {

  public static void main(String[] args){

    //first message to be encoded
    String message = "'what’s it going to be then, eh?’ there was me, that is alex
, and my three droogs, that is pete, georgie, and dim, dim being really dim, and
 we sat in the korova milkbar making up our rassoodocks what to do with the even
ing, a flip dark chill winter bastard though dry.";
    //copy of message sent to uppercase
    final String MESSAGE = message.toUpperCase();

    //second message to be encoded
    String message2 = "Gavin dopedrifted through the sensemadness of karnival li
ke a molecule enslaved in one of the savage’s amplifiers, vibrating with the chor
ds of the bass guitar, beaten from side to side by the hammering drum, darting w
ith the stringplay of the lead, in unrelenting, irrelevant motion.... throb, boo
m-boom, tinkle, twinkle, plink...";
    //copy of message sent to uppercase
    final String MESSAGE2 = message2.toUpperCase();


    //original letters
    final String ENCODE = "1234567890 .,()?!’-:;ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    //encoded letters
    final String KEY =    "Z G1HODIWQX50CSYT,(:6M-J8)?U2;7E’AF!VK3L4NBP9R.";

    //new instances of cipher
    Cipher encoder = new Cipher();

    //original message
    System.out.println("Original Message: " + MESSAGE);
    //encode
    encoder.encipher(ENCODE, KEY, MESSAGE);
    //print output
    System.out.println("Encoded Message: " + encoder.getOutput());
    //decode! (note interchanged KEY, ENCODE)
    encoder.encipher(KEY, ENCODE, encoder.getOutput());
    //print output
    System.out.println("Decoding of Message: " + encoder.getOutput());

    //return carriage
    System.out.println("");

    //original message
    System.out.println("Original Message: " + MESSAGE2);
    //show that encipher returns a string
    System.out.println("Encoded Message: " + encoder.encipher(ENCODE, KEY, MESSA
GE2));
    //decode returning string
    System.out.println("Decoding of Message: " + encoder.encipher(KEY, ENCODE, e
ncoder.getOutput()));

  }


}