Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/35: Рейтинг темы: голосов - 35, средняя оценка - 4.60
1 / 1 / 3
Регистрация: 17.12.2012
Сообщений: 79
1

Шифрование и расшифрование методом гаммирования и поразрядного циклического сдвига

04.11.2013, 16:54. Показов 6516. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! У меня не получается написать программу шифрования и расшифрования методом гаммирования и поразрядного циклического сдвига, помогите пожалуйста.

Размер обрабатываемого блока данных: 2 байта
Величина сдвига в битах: 3

Условие задачи:
Кликните здесь для просмотра всего текста

Разработать программу текстовый редактор (можно использовать объект класса TextArea или JTextArea) с функциями криптозащиты данных. В приложении для реализации алгоритма шифрования при сохранении данных в файле и расшифрования данных (при чтении из файла), использовать метод гаммирования и поразрядного циклического сдвига. Алгоритм: для блока данных заданного размера берется такого же размера фрагмент гаммы и выполняется операция поразрядного исключающего «ИЛИ», далее, выполняется операция поразрядного циклического сдвига на заданное число бит влево или вправо с полученным новым блоком. Расшифрование выполняется в обратном порядке, вначале циклический сдвиг в противоположную сторону, а затем операция поразрядного исключающего «ИЛИ» с блоками той же самой гаммы.
Для получения гаммы можно использовать стандартный воспроизводимый генератор псевдослучайный чисел (значение начальной инициализации является частью секретного ключа, другой частью ключа является размер поразрядного сдвига и его направление).


Текст программы:
Java
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
package javaapplication3;
import java.util.*;
import java.io.*;
public class JavaApplication3 {
    public static void main(String[] args) throws IOException {
        BufferedReader IN=new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Вводите данные: ");
        String DATA=IN.readLine();
        System.out.println("Введите значение ключа: ");
        int KEY=IN.read();
         char X1;
         boolean X2;
         do{
            System.out.println("Сдвиг влево(-)/вправо(+)?");
            X1=IN.readLine().charAt(0);
             if (X1=='+') X2=true;
             if (X1=='-') X2=false;
        } while (X1!='+' | X1!='-');
        
    }
}
 
class Gamma{
    private String Data;
    private int Key; 
//            Shift;
//    private boolean Way;
    Gamma() {this.Data="";this.Key=0;}
    Gamma(String X, int Y)  {this.Data=X;this.Key=Y;}
    void Encrypt(){
        Random R=new Random();
        R.setSeed(Key-1);
        int gamma, n=Data.length(), bufer;
        char[] BufData1, BufData2;
        if (n%2!=0){
            BufData1=Data.substring(0, n-1).toCharArray();
        }
        else {
            BufData1=Data.toCharArray();
        }
        
        for (int i=0; i<n/2; i+=2){
            gamma=R.nextInt()*100;
            int Mask=0x80000000;
            bufer=BufData1[i]+BufData1[i+1];
            
      //     BufData2[i+1]=bufer;
//            buffer>>16;
        }
        
        if (n%2!=0){
            
            
        }
        
    }
    void Decrypt(){
        Random R=new Random();
        int Gamma=R.nextInt(Key-1), 
            n=Data.length();
        char[] BufData1, BufData2;
        if (n%2!=0){
            BufData1=Data.substring(0, n-1).toCharArray();
        }
        else {
            BufData1=Data.toCharArray();
        }
        
        
    }
    void Print(){
        System.out.println("Строка: "+Data);
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2013, 16:54
Ответы с готовыми решениями:

Шифрование и дешифрование методом гаммирования и поразрядного циклического сдвига
Добрый день! У меня не получается шифрование и расшифрование методом гаммирования и поразрядного...

Шифрование текста методом циклического сдвига букв алфавита
помогите пожалуйста решить задачи))) Задача№1 Составить программу, которая вводит текст...

Выполнить шифрование/дешифрование строки символов, используя операцию циклического сдвига байтов
Выполнить шифрование/де шифрование строчки(рядка) символов, используя операцию циклического здвига...

Шифрование/ расшифрование методом решеток
Тип шифрования – шифрование методом решеток. Помогите пожалуйста кодом.

2
201 / 172 / 52
Регистрация: 01.06.2010
Сообщений: 371
04.11.2013, 19:36 2
Java
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
public class XOR {
 
    private ArrayList <Character> alphabet = new ArrayList<Character>();
    private int alphabetSize; 
    XOR() {
        for (char symbol = 'à'; symbol <= 'ÿ'; symbol++) {
            alphabet.add(symbol);
        }
        alphabetSize = alphabet.size();
    }
 
    String encrypt(String text, int key) {
        StringBuilder cryptogram = new StringBuilder();
 
        key = key % alphabetSize;
        for (int i = 0; i < text.length(); i++) {
            char symbol = text.charAt(i);
            if(symbol == ' '){
                cryptogram.append(" ");
            }else{
            int index = alphabet.indexOf(symbol);
            index = xor(index,random(key, i))%alphabetSize;
            cryptogram.append(alphabet.get(index));
            }
        }
        return cryptogram.toString();
    }
    
    public String decrypt(String text, int key){
        return encrypt(text, key);
    }
    
    private int random(int number, int count) {
        int numbers[] = new int[] { 5, 67, 21, 76, 13, 86, 32, 87, 3, 98, 21,
                9, 11, 54, 94, 1, 4, 7, 55, 44, 32, 95, 33, 22, 64, 87, 30, 39,
                65 };
        return numbers[(number * count) % numbers.length] % alphabet.size();
    }
    
    private int xor(int a, int b){
        return a^b;
    }
}
0
1 / 1 / 3
Регистрация: 17.12.2012
Сообщений: 79
04.11.2013, 22:31  [ТС] 3
Цитата Сообщение от name? Посмотреть сообщение
Java
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
public class XOR {
 
    private ArrayList <Character> alphabet = new ArrayList<Character>();
    private int alphabetSize; 
    XOR() {
        for (char symbol = 'à'; symbol <= 'ÿ'; symbol++) {
            alphabet.add(symbol);
        }
        alphabetSize = alphabet.size();
    }
 
    String encrypt(String text, int key) {
        StringBuilder cryptogram = new StringBuilder();
 
        key = key % alphabetSize;
        for (int i = 0; i < text.length(); i++) {
            char symbol = text.charAt(i);
            if(symbol == ' '){
                cryptogram.append(" ");
            }else{
            int index = alphabet.indexOf(symbol);
            index = xor(index,random(key, i))%alphabetSize;
            cryptogram.append(alphabet.get(index));
            }
        }
        return cryptogram.toString();
    }
    
    public String decrypt(String text, int key){
        return encrypt(text, key);
    }
    
    private int random(int number, int count) {
        int numbers[] = new int[] { 5, 67, 21, 76, 13, 86, 32, 87, 3, 98, 21,
                9, 11, 54, 94, 1, 4, 7, 55, 44, 32, 95, 33, 22, 64, 87, 30, 39,
                65 };
        return numbers[(number * count) % numbers.length] % alphabet.size();
    }
    
    private int xor(int a, int b){
        return a^b;
    }
}
это не то, сдвигов нету, гаммирования нет, ты ещё должен ввести символы с клавиатуры...
0
04.11.2013, 22:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2013, 22:31
Помогаю со студенческими работами здесь

Как закодировать методом циклического сдвига?
Здравствуйте! Вопрос такой, что представляет из себя кодировка методом циклического сдвига на 2...

Шифрование методом гаммирования
Просьба выложите у кого есть, прогуглил но таки и не нашел реализацию этого шифрования на php....

Шифрование методом гаммирования
Доброго времени суток! Вся соль в том, что реализовать шифрование нужно таким образом, чтобы ГАММА...

Шифрование методом гаммирования
Мультипликативный а = 5, m = 4096, Y0 = 3091 #include&lt;iostream&gt; #include&lt;math.h&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru