Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package mrubajczyk.model;
- public class ViginereCipher {
- private String text;
- private String key;
- private char[][] table;
- private char[] alphabet;
- // Conctructors
- public ViginereCipher(String text, String key) {
- this.text = text;
- this.key = key;
- InitializeTable();
- KeyToFullText();
- }
- // Getters and setters
- public String getText() {
- return text;
- }
- public void setText(String text) {
- this.text = text;
- }
- public String getKey() {
- return key;
- }
- public void setKey(String key) {
- this.key = key;
- }
- public char[][] getTable() {
- return table;
- }
- public void setTable(char[][] table) {
- this.table = table;
- }
- private void InitializeTable() {
- // alphabet
- char[] a = new char[26];
- for (int i = 0; i < 26; i++) {
- a[i] = (char) (97 + i);
- }
- alphabet = a;
- // table
- char[][] t = new char[26][26];
- int counter = -1;
- for (int i = 0; i < 26; i++) {
- counter = i;
- for (int j = 0; j < 26; j++) {
- int index = counter % 26;
- t[i][j] = alphabet[index];
- counter++;
- }
- }
- this.table = t;
- }
- private void KeyToFullText() {
- int txtLenght = this.text.length();
- String k = this.key;
- int counter = 0;
- StringBuilder s = new StringBuilder();
- for (int i = 0; i < txtLenght; i++) {
- if (counter == key.length()) {
- counter = 0;
- }
- s.append(k.charAt(counter));
- counter++;
- }
- this.key = s.toString();
- }
- public String Encrypt() {
- StringBuilder s = new StringBuilder();
- int x = -1;
- int y = -1;
- for (int i = 0; i < text.length(); i++) {
- // x index
- for (int j = 0; j < 26; j++) {
- if (text.charAt(i) == table[0][j]) {
- x = j;
- break;
- }
- }
- // y index
- for (int j = 0; j < 26; j++) {
- if (key.charAt(i) == table[j][0]) {
- y = j;
- break;
- }
- }
- s.append(table[x][y]);
- }
- return s.toString();
- }
- public String Decrypt(){
- this.key = KeyToIntChar();
- System.out.println(key);
- return Encrypt();
- }
- private String KeyToIntChar() {
- String key = this.key;
- StringBuilder s = new StringBuilder();
- for (int i = 0; i < key.length(); i++) {
- for (int j = 0; j < alphabet.length; j++) {
- if(key.charAt(i) == alphabet[j]){
- int index = Math.floorMod((26 - j), 26);
- s.append(alphabet[index]);
- }
- }
- }
- return s.toString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement