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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 38, средняя оценка - 4.87
celir
1 / 1 / 0
Регистрация: 20.12.2012
Сообщений: 20
#1

Метод гаммирования с обратной связью - C++

20.12.2012, 23:14. Просмотров 6127. Ответов 8
Метки нет (Все метки)

имею код программы без алгоритма шифрования. если я все правильно понимаю, то сейчас эта программа просто переписывает строку текста из одного файла в другой. но после выполнения программы, в выходном файле лишь невидимые символы в количестве символов исходного текста. что не так?

и второй вопрос: помогите понять как рабоатет метод шифрования гаммированием. я не понимаю алгоритм образования гаммы шифра и как его реализовать.

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
29
30
31
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<clocale>
#include<windows.h> 
#include <fstream> 
using namespace std;
 
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 
setlocale( LC_CTYPE,"Russian" ); //включаем поддержку русского языка
FILE*f,*f1; //описываем переменные f1, типа file в виде указателей, через них мы обратимся к файлам типа TXT
f=fopen("in.txt","r");  //открываем файл, с которого будем считывать текст
f1=fopen("out.txt","w");  //открываем файл в который будем записывать текст
char d;
 
while(d=fgetc(f)!=EOF)
{
    //поместить сюда цикл гаммирования
 
    fputc(d,f1);
}
fclose(f);
fclose(f1);
 
 
getch();
}
Добавлено через 7 часов 46 минут
Прошу модераторов удалить тему, т.к. сам во всем разобрался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2012, 23:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод гаммирования с обратной связью (C++):

Гаммирование с обратной связью - C++
Нужна помощь ребят. Я не програмист и С++ учил только самые основы, но в универе по предмету криптологии напрягли с прогой... Нужна хоть...

Бинарные деревья с обратной связью - C++
Дан адрес P1 вершины дерева — записи типа TNode, содержащей поля Data (целого типа), Left, Right и Parent (типа PNode — указателя на...

Генератор псевдослучайных чисел на основе сдвигового регистра с обратной связью - C++
Необходимо создать генератор псевдослучайных чисел на основе lfsr. Разрядов регистра 8. Ксорить: 8,4,3 и 2 биты. (f = b8 ^ b4 ^ b3 ^ ...

СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя - C++
Помогите ребят. Не могу построить алгоритмы для этих методов Язык C++

Шифры (метод гаммирования) - C++
Всем привет!!! Помогите пожалуйста с программой, которая реализует шифрование текста методом гаммирования. На вход поступает текст, потом...

Метод обратной матрицы - C++
Необходимо добавить метод нахождения обратной матрицы #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main() ...

8
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 567
11.04.2013, 18:40 #2
Так выложи код, чтобы поделится со всеми. Не только тебе это интересно!
0
celir
1 / 1 / 0
Регистрация: 20.12.2012
Сообщений: 20
01.07.2013, 13:41  [ТС] #3
ограничение - латинский алфавит
для расшифровки вводим тот же ключ, что и для зашифровки
0
Вложения
Тип файла: zip gamm.zip (5.4 Кб, 594 просмотров)
Тип файла: txt in.txt (16 байт, 345 просмотров)
Тип файла: txt out.txt (16 байт, 284 просмотров)
XRuZzz
Антикодер
681 / 583 / 29
Регистрация: 15.09.2012
Сообщений: 2,531
01.07.2013, 13:51 #4
Цитата Сообщение от celir Посмотреть сообщение
и второй вопрос: помогите понять как рабоатет метод шифрования гаммированием. я не понимаю алгоритм образования гаммы шифра и как его реализовать.
гаммирование без обратной связи понимаете?
Гаммирование

Добавлено через 2 минуты
вот кстати товарищ уже объяснял в теме Гаммирование с обратной связью
0
celir
1 / 1 / 0
Регистрация: 20.12.2012
Сообщений: 20
01.07.2013, 17:06  [ТС] #5
я во всем разобрался, программа, выложенная выше - моего написания. Обратная связь, как я понял, значит, что при создании гаммы, кждое следующее значения получается с использованием предыдущего, т.е. Просто рекурсивное уравнение
0
Наби
0 / 0 / 0
Регистрация: 09.12.2015
Сообщений: 1
10.12.2015, 14:10 #6
Цитата Сообщение от celir Посмотреть сообщение
ограничение - латинский алфавит
для расшифровки вводим тот же ключ, что и для зашифровки
а у вас остался исходный код программы?
0
celir
1 / 1 / 0
Регистрация: 20.12.2012
Сообщений: 20
10.12.2015, 21:28  [ТС] #7
да, вам повезло)
Этот код я последний раз трогал года 2 назад, вроде бы это окончательно рабочий.
1
Вложения
Тип файла: zip rgr.zip (1.5 Кб, 181 просмотров)
yaro78
0 / 0 / 0
Регистрация: 19.11.2015
Сообщений: 1
04.01.2016, 23:06 #8
В листинг, приведенной выше программной реализации гаммирования с обратной связью, следовало добавить сложение по модулю два.
Вот, теперь работает по-настоящему в Visual Studio 2010

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
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
#include "stdafx.h"
 
#include <iostream>
 
using namespace std;
 
const int FIRST_SYMBOL = ' '; // первый символ
const int SYMBOL_NUMBER = 95; // для простоты кодируем только английский алфавит 
 
void GammaCoding( char *input, char *gamma, char *result )
{
  for( char *i=input, *j=gamma; *i; i++, j++ )
  {
    if(!(*j)) j=gamma;
    int Ti = *i - FIRST_SYMBOL;
    int Gi = *j - FIRST_SYMBOL;
    *(result++) = FIRST_SYMBOL+(Ti+Gi)%SYMBOL_NUMBER;
  }
  *result = '\0';
}
 
void GammaDecoding( char *input, char *gamma, char *result )
{
  for( char *i=input, *j=gamma; *i; i++, j++ )
  {
    if(!(*j)) j=gamma;
    int Ci = *i - FIRST_SYMBOL;
    int Gi = *j - FIRST_SYMBOL;
    *(result++) = FIRST_SYMBOL+(Ci-Gi+SYMBOL_NUMBER)%SYMBOL_NUMBER;
  }
  *result = '\0';
}
 
int main()
{
    setlocale(LC_ALL, "rus");
    char str1[256], gamma[256], rez[256];
 
    cout << "Введите исходное сообщение: ";
    cin >> str1;
    cout << "Введите гамму: ";
    cin >> gamma;
 
    GammaCoding( str1, gamma, rez );
    cout << "Зашифрованное сообщение: ";
    cout << rez << endl;
  
    cout << "Введите зашифрованное сообщение: ";
    cin >> rez;
 
    GammaDecoding( rez, gamma, str1 );
    cout << "Исходное сообщение: ";
    cout << str1 << endl;
 
    system("pause");
    return 0;
}
0
Nichers
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 5
10.03.2016, 16:30 #9
Цитата Сообщение от yaro78 Посмотреть сообщение
В листинг, приведенной выше программной реализации гаммирования с обратной связью, следовало добавить сложение по модулю два.
Вот, теперь работает по-настоящему в Visual Studio 2010
Твоя программа работает согласно госту 28147-89 ?
0
10.03.2016, 16:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2016, 16:30
Привет! Вот еще темы с ответами:

Метод обратной матрицы - C++
Я писал свою программу давно на Паскале.. щас же мне она нужна на языке С++... може кто поможет перевести на С? заранее спасибо...всех с...

Метод обратной прогонки - C++
Нужно реализовать метод обратной прогонки на с++.МОЖНО ВЗЯТЬ ЛЮБОЙ ПРИМЕР.КТО МОЖЕТ ПОМОГИТЕ!!

Метод Крамера или обратной матрцы! - C++
Всем привет! мне надо написать программу для решения уранений метод Крамера или обратной матрцы, но я не знаю как решать уравнения такими...

Метод итераций для нахождения обратной матрицы - C++
Люди, подскажите как написать программу нахождения обратной матрицы методом итераций, или хотя бы решения системы уравнений


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru