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:}