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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Cofeee
Сообщений: n/a
#1

Программа шифрования и дешифрования. - C++

11.12.2011, 15:39. Просмотров 1174. Ответов 0
Метки нет (Все метки)

Пытаюсь реализовать что-то на подобие шифра Цезаря. Программа должна открывать файл, считывать поэлементно его содержимое и если будет находить соотв. элемент - сдвигать его и записывать в новый файл, а если соотв. эл. не найдет то запис. не изменённым. Проблема в том что, когда начинаю сравнивать исходный файл и дешифрованый - обнаруживаю, что файлы не идентичны. А именно один элемент неправильно дешифрован. Подскажите в чем проблема пожалуйста!
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
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <string>
using namespace std;
 
char Shifr(char* ABC, char c, int n, int len) // --------------------- ф-я Шифрования
{
    for(int i = 0; i < len; i++)
    {
        if(ABC[i] == c)
        {
            int q = i + n;
            if ( q  >= len)
            {
                return ABC[q - len];
            }
            else
                return ABC[q];
            
        }
    }
    return c;
}
 
char Deshifr(char* ABC, char c, int n, int len) //------------------- ф-я Дешифрования
{
    for(int i = 0; i < len; i++)
    {
        if(ABC[i] == c)
        {
            int q = i - n;
            if (q < 0)
            {
                return ABC[len + q];
            }
            else
                return ABC[i - n];
             
        }
    }
    return c;
}
 
 
int main() // - - - - - - - - - - - - - - - - - - - - - - - - - - - -  main()
     
{
    setlocale(LC_ALL,"russian");
    
    char text[126];
    char x[100];
    int n,num;
    
    FILE *alf , *ish , *sh , *d_sh;
 
      alf = fopen ( "Alfavit.txt", "rb" )
      int q = 0;
 
      while ( !feof (alf))
      {
            fread ( &text[q] ,1 ,1 ,alf);
            q++;
      }
 
      fclose (alf);
 
    cout << "Введите размер сдвига:";
    cin>> n;
    cout << endl;
 
    int i = 0;
    ish = fopen ( "смайл1.wav" , "rb" );
    sh = fopen ( "Shifr.oop" , "wb" );
    int b;
      while ((b =  fgetc (ish))!=EOF)
      {
          b = Shifr(text,b,n,126);//------ Вызов функции Шифрования
          fputc(b, sh);
          i++;
      }
          
      int  p = i;
      cout << endl << p << endl;
 
      fclose(ish);
      fclose (sh);
 
      cout <<"Файл зашифрован !"<<endl<<endl;
 
    do {
    cout <<"1.Выйти"<<endl;
    cout <<"2.Дешифровать"<<endl;
    cout <<"Ваш выбор:";
 
    cin >> num;
    switch (num)
    {
    case 1:
        break;
    case 2:
        {
            int i = 0;
            cout <<"Файл дешифрован !"<<endl;
            sh = fopen ( "Shifr.oop" , "rb" );
            d_sh = fopen ( "DeShifr.wav" , "wb" );
            int v;
            while ( (v = fgetc(sh))!=EOF)
            
                {
                    v = Deshifr(text,v,n,126);//------ Вызов функции Дешифрования
                    fputc(v, d_sh);
                    i++;
                }
 
            int  j = i ;
            cout << endl << j << endl;
            fclose(sh);
            fclose (d_sh);
            break;
        }
 
        
    } cout<<endl;
        
    }
    while ( num != 1);
     
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2011, 15:39     Программа шифрования и дешифрования.
Посмотрите здесь:

Программа шифрования\дешифрования - C++
Уважаемые программисты! Хочу попросить у Вас помощи в написании 2-х программ... Я ещё не очень силён в программировании, плюс ко всему...

Почему не полностью работает программа шифрования? шифрует ок, а дешифрирует плохо, теряет последние 2 символа - C++
вот так. Помогите с проблемой. #include &lt;vcl&gt; #include &lt;conio&gt; #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;string&gt; ...

Алгоритм дешифрования. Всё горит, помогите лузеру - C++
Помогите разобраться с кодом программы для работы с файлами СУБД Cronos, особенно с процедурой encode (что есть offset, buf, kod..). Как...

Шифрование-Дешифрование - После дешифрования, текст "сползает" со своих мест - C++
Добрый ночи! Понадобилось добавить режим шифрования-дешифрования в курсовую работу. Накидал для примера, где застрял с проблемой. ...

шифрования - C++
Помогите мне с этим кодом, не работает должным образом... Он должен шифровать текст в текстовом файле encode.txt, а затем он должен...

Метод шифрования - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main() { setlocale(0, &quot;RUS&quot;); ifstream...

Считывания для шифрования - C++
Возник вопрос как можно с файла считывать куски определенного размера для дальнейшего их шифрования(дешифрования)??

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

Функции шифрования в MSDN - C++
Не могу найти никакой информации о функциях шифровки из библиотеки MSDN. Может кто-нибудь поможет?

Не работает реализация шифрования - C++
Помогите , программа не работает , как таковых ошибок нет , но и не шифрует . //Melnik M . V . #include &lt;stdio.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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