0 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 18
1

Произвести шифрование с использованием поразрядной операции «исключающее или»

29.10.2012, 18:41. Показов 4574. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста с задачкой!

Считать две строки: «текст» и «ключ». Произвести шифрование с использованием поразрядной операции «исключающее или».
Вывести посимвольно результат (зашифрованный текст). Произвести повторное XOR-гаммирование зашифрованного ранее текста и вывести полученную строку (чтобы видеть, что она совпадает с исходным текстом). Необходимо реализовать XOR-гаммирование в виде отдельной функции.
Пусть длина ключа произвольна и заранее неизвестна. Как реализовать алгоритм без применения оператора %?
Подсказка.
  • Использовать два счётчика (по тексту и по ключу), обнулять счётчик ключа при достижении им длины ключа.
  • Пусть длина ключа есть степень двойки. Чем можно заменить опе-ратор % для ускорения работы алгоритма? (Остаток от деления вычисляется медленно.)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.10.2012, 18:41
Ответы с готовыми решениями:

Шифрование и дешифрование с использованием алгоритма "исключающее ИЛИ"
Мне нужно создать программу шифрования или дешифрования с помощью алгоритма "исключающее ИЛИ"....

Ввести три числа, произвести с ними операцию "Исключающее Или"
Ввод 3 чисел(любых). Операция искл ИЛИ (^)

Исключающее ИЛИ (XOR). Нужен пример операции побайтного XOR
Может кто-нибудь привести пример операции побайтного XOR?что-то вроде: есть данные,считанные из...

Шифрование бинарные операции + Base64String с использованием ключа
Немного поэкспериментировал с шифрованием, в итоге собрал такой класс: class Encryption {...

4
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.10.2012, 19:17 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
 
void Shifr(char *x, char *key)
{
   char *pkey = key;
   while(*x)
   {
       if (*pkey == '\0')
          pkey = key;
       *x++ ^= *pkey++;
   }
}
 
int main()
{
    char x[] = "an open text", key[] = "key";
    Shifr(x, key);
    std::cout << x << "\n";
    Shifr(x, key);
    std::cout << x << "\n";
    return 0;
}
1
0 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 18
29.10.2012, 19:36  [ТС] 3
Thinker
Простите пожалуйста, но ведь мне нужно считать 2 строки, т.е. ввести их с клавиатуры. А в Вашей программе этого нет (
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.10.2012, 19:42 4
это уже мелочи
C++
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
#include<iostream>
 
const int N = 1024;
 
void Shifr(char *x, char *key)
{
   char *pkey = key;
   while(*x)
   {
       if (*pkey == '\0')
          pkey = key;
       *x++ ^= *pkey++;
   }
}
 
int main()
{
    char x[N], key[N];
    std::cout << "x = "; std::cin.getline(x, N);
    std::cout << "key = "; std::cin.getline(key, N);
    Shifr(x, key);
    std::cout << x << "\n";
    Shifr(x, key);
    std::cout << x << "\n";
    return 0;
}
1
0 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 18
29.10.2012, 19:50  [ТС] 5
Thinker
Спасибо большое!
0
29.10.2012, 19:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2012, 19:50
Помогаю со студенческими работами здесь

Применение поразрядной операции с НЕ (~) для обратного отображения битов
Еще раз всем привет! Изучаю Java по Г.Шилдту - Java 6 издание. Собственно пример кода взят прям с...

К каким типам применяются логические операторы И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ
Что искал - может невнимательно. Не смог найти подтверждения практике. Как я понял операции &amp; ! |...

Перевод в базис или, исключающее или, константа 1
Народ, натолкните на умную мысль. Есть функция в ДНФ. Нужно перевести в логический базис ИЛИ,...

Написать программу на языке С++ по теме динамический массив с использованием операции new или malloc
Написать программу на С++. Написать программу на языке С++ по теме динамический массив с...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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