Форум программистов, компьютерный форум CyberForum.ru

Шифрация (С++) - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.61
Сольвейг
0 / 0 / 0
Регистрация: 10.12.2011
Сообщений: 16
11.12.2011, 12:05     Шифрация (С++) #1
"Один из методов шифрации называется наложением гаммы. Делается это следующим образом: берется некоторое случайное число в диапазоне от 127 до 255 — гамма, и код каждого символа строки заменяется кодом, получающимся в результате операции: новый код=старый код XOR гамма.
Написать программу, реализующую:
• данный метод шифрации;
• дешифрацию строки при заданной гамме.

Входные данные:
• шифруемая строка.

Выходные данные:
• гамма;
• зашифрованная строка."
Совсем не понимаю, что от меня хотят
Подскажите, пожалуйста, с чего начать.

Добавлено через 13 часов 57 минут
Я так поняла, что нужно взять буквы из моей строки, представить их в двоичном коде и сложить с двоичным представлением буквы в новой полученной гамме (массиве).
Но не знаю, как реализовать в программе такое действие: Ввожу строку, и данный массив символов представляется в виде массива индекса данных элементов из массива "Алфавит".
Кто-нибудь знает как это можно реализовать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2011, 12:05     Шифрация (С++)
Посмотрите здесь:

Delphi шифрация кода программы
шифрация пароля Delphi БД
Delphi БД Шифрация и дешифрация пароля
Шифрация строки в sha256 C#
Delphi Шифрация Трафика
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
11.12.2011, 12:07     Шифрация (С++) #2
Цитата Сообщение от Сольвейг Посмотреть сообщение
представить их в двоичном коде и сложить с двоичным представлением буквы в новой полученной гамме (массиве).
нет, все и так в двоичном коде. Векторная операция ^ и есть сложение по модулю 2. учить матчасть.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
11.12.2011, 12:23     Шифрация (С++) #3
Цитата Сообщение от alkagolik Посмотреть сообщение
Векторная операция ^
Битовая
Цитата Сообщение от alkagolik Посмотреть сообщение
учить матчасть.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.12.2011, 12:34     Шифрация (С++) #4
Цитата Сообщение от Сольвейг Посмотреть сообщение
"Один из методов шифрации называется наложением гаммы. Делается это следующим образом: берется некоторое случайное число в диапазоне от 127 до 255 — гамма
Любой файл это последовательный набор байт, значения которых от 0 до 255, то есть элементы кольца вычетов по модулю 256. Поэтому можно методом гаммирования зашифровать любой файл (лучше рассматривать двоичные файлы) и каждый элемент гаммы - число от 0 до 255
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
11.12.2011, 12:44     Шифрация (С++) #5
Цитата Сообщение от Deviaphan Посмотреть сообщение
Битовая
с каких пор байт не вектор, а векторная операция - битовая?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
11.12.2011, 12:45     Шифрация (С++) #6
Цитата Сообщение от alkagolik Посмотреть сообщение
а векторная операция - битовая?
Примерно с тех пор, как она называется bitwise, то есть побитовая.)
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
11.12.2011, 12:46     Шифрация (С++) #7
Deviaphan, не знаю я в математике никаких битвайсов
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
11.12.2011, 12:48     Шифрация (С++) #8
Цитата Сообщение от Сольвейг Посмотреть сообщение
Совсем не понимаю, что от меня хотят
Еще бы. Шифрация, дешифрация.. я бы тоже не понял.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
11.12.2011, 12:51     Шифрация (С++) #9
Цитата Сообщение от alkagolik Посмотреть сообщение
не знаю я в математике
В С++ нет векторных операторов. Вообще. И векторного оператора ^ нету, а битовый оператор ^ есть.

Добавлено через 23 секунды
Цитата Сообщение от alkagolik Посмотреть сообщение
не знаю я в математике никаких битвайсов
А в математике нет никаких байтов.
Сольвейг
0 / 0 / 0
Регистрация: 10.12.2011
Сообщений: 16
11.12.2011, 12:52  [ТС]     Шифрация (С++) #10
Для того, чтобы сложить, мне же всё равно нужно как-то вывести вместо буквы её индекс в массиве.
Я не понимаю как.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.12.2011, 12:53     Шифрация (С++) #11
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
27
28
#include <iostream>
#include <cstring>
 
void gammaEnDecrypt(std::string::iterator begin, std::string::iterator end, const int gamma)
{
    for( ; begin != end; ++begin)
        *begin ^= gamma;
}
    
int main()
{
    std::string str;
    char ch = 'a';
    str += (ch); str += (ch + 13); str += (ch + 3); str += ' ';
    str += (ch + 24); str += (ch + 14); str += (ch + 20); str += ' ';
    str += (ch + 13); str += (ch + 4); str += (ch + 4); str += (ch + 3); str += ' ';
    str += (ch + 8); str += (ch + 19); str += "?!";
    const int gamma = 0x9D;
    gammaEnDecrypt(str.begin(), str.end(), gamma);
    
    int g;
    std::cin >> g;
    gammaEnDecrypt(str.begin(), str.end(), g);
    
    std::cout << str << std::endl;
    
    return 0;
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.12.2011, 12:53     Шифрация (С++) #12
Цитата Сообщение от Сольвейг Посмотреть сообщение
Для того, чтобы сложить, мне же всё равно нужно как-то вывести вместо буквы её индекс в массиве.
Я не понимаю как.
символы хранятся в виде кодов, там уже число.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
11.12.2011, 12:53     Шифрация (С++) #13
Цитата Сообщение от Deviaphan Посмотреть сообщение
В С++ нет векторных операторов. Вообще. И векторного оператора ^ нету, а битовый оператор ^ есть.
Цитата Сообщение от alkagolik Посмотреть сообщение
Векторная операция ^
Цитата Сообщение от Deviaphan Посмотреть сообщение
А в математике нет никаких байтов.
верно, есть вектор, а байт == вектор.
Сольвейг
0 / 0 / 0
Регистрация: 10.12.2011
Сообщений: 16
11.12.2011, 12:59  [ТС]     Шифрация (С++) #14
Цитата Сообщение от soon Посмотреть сообщение
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
27
28
#include <iostream>
#include <cstring>
 
void gammaEnDecrypt(std::string::iterator begin, std::string::iterator end, const int gamma)
{
    for( ; begin != end; ++begin)
        *begin ^= gamma;
}
    
int main()
{
    std::string str;
    char ch = 'a';
    str += (ch); str += (ch + 13); str += (ch + 3); str += ' ';
    str += (ch + 24); str += (ch + 14); str += (ch + 20); str += ' ';
    str += (ch + 13); str += (ch + 4); str += (ch + 4); str += (ch + 3); str += ' ';
    str += (ch + 8); str += (ch + 19); str += "?!";
    const int gamma = 0x9D;
    gammaEnDecrypt(str.begin(), str.end(), gamma);
    
    int g;
    std::cin >> g;
    gammaEnDecrypt(str.begin(), str.end(), g);
    
    std::cout << str << std::endl;
    
    return 0;
}
Программа не запускается, выдаёт много ошибок
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.12.2011, 12:59     Шифрация (С++) #15
Цитата Сообщение от alkagolik Посмотреть сообщение
байт == вектор

Не по теме:

Не совсем. Если рассматривать векторные пространства, то, например множество непрерывных функций на отрезке [a,b] является векторным пространством, где вектор - функция и т.д.

soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.12.2011, 13:05     Шифрация (С++) #16
Цитата Сообщение от Сольвейг Посмотреть сообщение
Программа не запускается, выдаёт много ошибок
1) Уверены, что на С++?
Код для Си
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
void gammaEnDecrypt(char* begin, const int gamma)
{
    for( ; *begin; ++begin)
        *begin ^= gamma;
}
    
int main(void)
{
    char str[] = "lalalalalalal";
    const int gamma = 0x9D;
    gammaEnDecrypt(str, gamma);
    
    int g;
    scanf("%d", &g);
    gammaEnDecrypt(str, g);
    
    printf("%s", str);
    
    return 0;
}

2) Ошибки приведите.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
11.12.2011, 13:06     Шифрация (С++) #17
Цитата Сообщение от soon Посмотреть сообщение
2) Ошибки приведите.
#include <cstring>
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.12.2011, 13:08     Шифрация (С++) #18
soon, в большинстве случаев стараются гамму сделать не периодической, чтобы вскрыть шифр было почти невозможно. Данный шифр, заявленный в первом посте, называется шифром Вернама
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
11.12.2011, 13:10     Шифрация (С++) #19
Цитата Сообщение от Thinker Посмотреть сообщение
не периодической
раскройте пожалуйста
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2011, 13:12     Шифрация (С++)
Еще ссылки по теме:

C++ Шифрация битов
Delphi Delphi и шифрация кода
Шифрация наложением гаммы Pascal

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

Или воспользуйтесь поиском по форуму:
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
11.12.2011, 13:12     Шифрация (С++) #20
Цитата Сообщение от Thinker Посмотреть сообщение
в большинстве случаев стараются гамму сделать не периодической
Тут период равен вообще единице.)
Yandex
Объявления
11.12.2011, 13:12     Шифрация (С++)
Ответ Создать тему
Опции темы

Текущее время: 23:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru