CIS 3020 Project 5

From In The Wings
Revision as of 13:51, 5 November 2007 by Jka (talk | contribs)
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);
    }
  }
}
}