Advertisement
Guest User

Untitled

a guest
Jan 20th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.05 KB | None | 0 0
  1. package mrubajczyk.model;
  2.  
  3. public class ViginereCipher {
  4.  
  5.     private String text;
  6.     private String key;
  7.     private char[][] table;
  8.     private char[] alphabet;
  9.  
  10.     // Conctructors
  11.     public ViginereCipher(String text, String key) {
  12.         this.text = text;
  13.         this.key = key;
  14.         InitializeTable();
  15.         KeyToFullText();
  16.     }
  17.  
  18.  
  19.     // Getters and setters
  20.     public String getText() {
  21.         return text;
  22.     }
  23.  
  24.     public void setText(String text) {
  25.         this.text = text;
  26.     }
  27.  
  28.     public String getKey() {
  29.         return key;
  30.     }
  31.  
  32.     public void setKey(String key) {
  33.         this.key = key;
  34.     }
  35.  
  36.     public char[][] getTable() {
  37.         return table;
  38.     }
  39.  
  40.     public void setTable(char[][] table) {
  41.         this.table = table;
  42.     }
  43.  
  44.     private void InitializeTable() {
  45.  
  46.         // alphabet
  47.         char[] a = new char[26];
  48.         for (int i = 0; i < 26; i++) {
  49.             a[i] = (char) (97 + i);
  50.         }
  51.  
  52.         alphabet = a;
  53.  
  54.         // table
  55.         char[][] t = new char[26][26];
  56.         int counter = -1;
  57.         for (int i = 0; i < 26; i++) {
  58.             counter = i;
  59.             for (int j = 0; j < 26; j++) {
  60.                 int index = counter % 26;
  61.                 t[i][j] = alphabet[index];
  62.                 counter++;
  63.             }
  64.         }
  65.         this.table = t;
  66.     }
  67.  
  68.     private void KeyToFullText() {
  69.         int txtLenght = this.text.length();
  70.         String k = this.key;
  71.         int counter = 0;
  72.         StringBuilder s = new StringBuilder();
  73.         for (int i = 0; i < txtLenght; i++) {
  74.             if (counter == key.length()) {
  75.                 counter = 0;
  76.             }
  77.             s.append(k.charAt(counter));
  78.             counter++;
  79.         }
  80.         this.key = s.toString();
  81.     }
  82.  
  83.     public String Encrypt() {
  84.         StringBuilder s = new StringBuilder();
  85.         int x = -1;
  86.         int y = -1;
  87.  
  88.         for (int i = 0; i < text.length(); i++) {
  89.             // x index
  90.             for (int j = 0; j < 26; j++) {
  91.                 if (text.charAt(i) == table[0][j]) {
  92.                     x = j;
  93.                     break;
  94.                 }
  95.             }
  96.             // y index
  97.             for (int j = 0; j < 26; j++) {
  98.                 if (key.charAt(i) == table[j][0]) {
  99.                     y = j;
  100.                     break;
  101.                 }
  102.             }
  103.             s.append(table[x][y]);
  104.         }
  105.  
  106.         return s.toString();
  107.     }
  108.  
  109.     public String Decrypt(){
  110.         this.key = KeyToIntChar();
  111.         System.out.println(key);
  112.         return Encrypt();
  113.     }
  114.  
  115.     private String KeyToIntChar() {
  116.         String key = this.key;
  117.         StringBuilder s = new StringBuilder();
  118.         for (int i = 0; i < key.length(); i++) {
  119.             for (int j = 0; j < alphabet.length; j++) {
  120.                 if(key.charAt(i) == alphabet[j]){
  121.                     int index = Math.floorMod((26 - j), 26);
  122.                     s.append(alphabet[index]);
  123.                 }
  124.             }
  125.         }
  126.         return s.toString();
  127.     }
  128.  
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement