To change this template choose Tools Templates and open the template i

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package lab1;
/**
*
* @author OZZY
*/
public class EncString {
private StringBuffer str;
private int key;
private static String text[] = {"abcdefghijklmnopqrstuvwxyz", "GOYDSIPELUAVCRJWXZNHBQFTMK"};
private String keyStr;
/**
*
* @param str - шифруемая строка
* @param key - ключ, число позиций для сдвига
* @param keyStr - ключ (лозунг), строка для алгоритма Виженера
*/
public EncString(StringBuffer str, int key, String keyStr) {
this.str = str;
this.key = key;
this.keyStr = keyStr;
}
public void encryptShift() {
for (int i = 0; i < str.length(); i++) {
str.setCharAt(i, (char) (str.charAt(i) + key));
}
outstr("Зашифрованная строка (алгоритм сдвига): ");
}
public void decipherShift() {
for (int i = 0; i < str.length(); i++) {
str.setCharAt(i, (char) (str.charAt(i) - key));
}
outstr("Расшифрованная строка (алгоритм сдвига): ");
}
public void encryptReplace() {
for (int i = 0; i < str.length(); i++) {
int index = text[0].indexOf(str.charAt(i));
str.setCharAt(i, text[1].charAt(index));
}
outstr("Зашифрованная строка (алгоритм замены): ");
}
public void decipherReplace() {
for (int i = 0; i < str.length(); i++) {
int index = text[1].indexOf(str.charAt(i));
str.setCharAt(i, text[0].charAt(index));
}
outstr("Расшифрованная строка (алгоритм замены): ");
}
public void encryptVizhener () {
for (int i = 0; i < str.length(); i++) {
int index = text[0].indexOf(keyStr.charAt(i));
index += text[0].indexOf(str.charAt(i));
index %= 25;
str.setCharAt(i, text[1].charAt(index));
System.out.println(index);
}
outstr("Зашифрованная строка (алгоритм Виженера): ");
}
public void decipherVizhener () {
for (int i = 0; i < str.length(); i++) {
int index = text[1].indexOf(str.charAt(i)) + 25;
index -= text[0].indexOf(keyStr.charAt(i));
index %= 25;
str.setCharAt(i, text[0].charAt(index));
}
outstr("Расшифрованная строка (алгоритм Виженера): ");
}
private void outstr(String msg) {
System.out.println(msg);
System.out.println(str);
System.out.println();
}
}
// МАЙН
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package lab1;
import java.util.Random;
/**
*
* @author OZZY
*/
public class Main {
/**
* @param args the command line arguments
*/
private static Random random = new Random ();
static int generateRandom(int n) {
return Math.abs(random.nextInt()) % n;
}
public static void main(String[] args) {
EncString eStr = new EncString(new StringBuffer("thisi"), 2, "sesame");
eStr.encryptShift();
eStr.decipherShift();
eStr.encryptReplace();
eStr.decipherReplace();
eStr.encryptVizhener();
eStr.decipherVizhener();
}
}