1:public class PseudoOneTimePad implements Encryptable, Decryptable { 2: 3: private int[] keystream; 4: 5: public PseudoOneTimePad(){ 6: this(null); 7: } 8: 9: public PseudoOneTimePad(int[] keystream){ 10: this.keystream = keystream; 11: } 12: 13: 14: 15: public String encrypt(String s){ 16: char[] letters = s.toCharArray(); 17: 18: 19: for (int i = 0; i < letters.length; i++){ 20: 21: letters[i] = (char) ((int)letters[i] + keystream[i] - 65); // the 65 is not necessary but makes for a prettier string 22: } 23: 24: String encrypted = new String(letters); 25: return encrypted; 26: } 27: 28: public String decrypt(String s){ 29: char[] encryptedLetters = s.toCharArray(); 30: 31: for (int i = 0; i < encryptedLetters.length; i++){ 32: encryptedLetters[i] = (char) (encryptedLetters[i] - keystream[i] + 65); 33: 34: } 35: 36: String decrypted = new String(encryptedLetters); 37: return decrypted; 38: } 39:}