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

Ввод данных - C++

Восстановить пароль Регистрация
 
oks1d
4 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
14.12.2013, 15:48     Ввод данных #1
Во время работы программы она не видит строку(как я думаю) cout<<"m="<<m<<"";(эта строка находится в функции decrypt) как это исправить? Программа работает


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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
#include <fstream>  
#include <iostream>
using namespace std;
int power(int a, int b, int n){// a^b mod n
    int tmp=a; 
    int sum=tmp; 
    for(int i=1;i<b;i++){ 
        for(int j=1;j<a;j++){ 
            sum+=tmp; 
            if(sum>=n){ 
                sum-=n; 
            } 
        } 
        tmp=sum; 
    } 
    return tmp; 
    system("pause");
} 
 
int mul(int a, int b, int n){// a*b mod n 
    int sum=0; 
     
    for(int i=0;i<b;i++){ 
        sum+=a; 
         
        if(sum>=n){ 
            sum-=n; 
        } 
    } 
 system("pause");
    return sum; 
} 
 
/***************************************************** 
    p - простое число
    0 < g < p-1
    0 < x < p-1
    m - шифруемое сообщение m < p
*****************************************************/
void crypt(int p,int g,int x, string inFileName,string outFileName){ 
    ifstream inf(inFileName.c_str()); 
    ofstream outf(outFileName.c_str());
    setlocale( LC_ALL,"Russian" );
    cout<<"Введите значения для p,g,x\n";
    cin>>p>>g>>x;
 
    int y=power(g,x,p); 
     
    cout<<"Открытый ключ (p,g,y)="<<"("<<p<<","<<g<<","<<y<<")"<<endl; 
    cout<<"Закрытый ключ x="<<x<<endl; 
     
    cout<<"\nШифруемый текст:"<<endl; 
    char m;
    cin>>m;
    while(inf.good()){ 
        int m=inf.get(); 
        if(m>0){ 
            cout<<(char)m; 
             
            int k=rand()%(p-2)+1; // 1 < k < (p-1) 
            int a= power(g,k,p); 
            int b= mul(power(y,k,p),m,p); 
            outf<<a<<" "<<b<<" "; 
        } 
    } 
 
    cout<<endl; 
 
    inf.close(); 
    outf.close(); 
    system("pause");
} 
 
void decrypt(int p,int x,string inFileName,string outFileName){ 
    ifstream inf(inFileName.c_str()); 
    ofstream outf(outFileName.c_str()); 
      setlocale( LC_ALL,"Russian" );
 
    cout<<"\nДешифрованый текст:"<<endl; 
 
    while(inf.good()){ 
        int a=0; 
        int b=0; 
        inf>>a; 
        inf>>b; 
         
        if(a!=0&&b!=0){ 
            //cout<<a<<" "<<b<<endl; 
         
            int deM=mul(b,power(a,p-1-x,p),p);// m=b*(a^x)^(-1)mod p =b*a^(p-1-x)mod p 
            char m=static_cast<char>(deM);
            outf<<m; 
            cout<<"m="<<m<<"";  
        } 
    } 
     
    cout<<endl; 
 
    inf.close(); 
    outf.close(); 
    system("pause");
}
 
int main(){
 
    srand(time(NULL));
   setlocale( LC_ALL,"Russian" );
 
    crypt(593,123,8, "in.txt","out_crypt.txt"); 
    decrypt(593,8,"out_crypt.txt","out_decrypt.txt");
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Doksim
 Аватар для Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
14.12.2013, 15:55     Ввод данных #2
вставляйте код, пожалуйста, в эту штуку:
C++
1
я код
Добавлено через 36 секунд
Цитата Сообщение от oks1d Посмотреть сообщение
Во время работы программы она не видит строку(как я думаю) cout<<"m="<<m<<"";(эта строка находится в функции decrypt) как это исправить?
WAT
oks1d
4 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
14.12.2013, 16:00  [ТС]     Ввод данных #3
Программа хорошо компилируется , вот ход работы
Введите значения p,g,x
ввожу..
ввожу..
ввожу..
Открытый ключ ...бла бла бла
Закрытый ключ бла бла бла..
Шифруемый текст: ввожу..
//затем должно быть написанно дешифруемый текст и вывести то значение которое я зашифровал но выводит на экран просто надпись Дешифрованный текст: (без значения) , оператор вывода у меня в коде есть не пойму в чем дело.
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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
#include <fstream>  
#include <iostream>
using namespace std;
int power(int a, int b, int n){// a^b mod n
    int tmp=a; 
    int sum=tmp; 
    for(int i=1;i<b;i++){ 
        for(int j=1;j<a;j++){ 
            sum+=tmp; 
            if(sum>=n){ 
                sum-=n; 
            } 
        } 
        tmp=sum; 
    } 
    return tmp; 
    system("pause");
} 
 
int mul(int a, int b, int n){// a*b mod n 
    int sum=0; 
     
    for(int i=0;i<b;i++){ 
        sum+=a; 
         
        if(sum>=n){ 
            sum-=n; 
        } 
    } 
 system("pause");
    return sum; 
} 
 
/***************************************************** 
    p - простое число
    0 < g < p-1
    0 < x < p-1
    m - шифруемое сообщение m < p
*****************************************************/
void crypt(int p,int g,int x, string inFileName,string outFileName){ 
    ifstream inf(inFileName.c_str()); 
    ofstream outf(outFileName.c_str());
    setlocale( LC_ALL,"Russian" );
    cout<<"Введите значения для p,g,x\n";
    cin>>p>>g>>x;
 
    int y=power(g,x,p); 
     
    cout<<"Открытый ключ (p,g,y)="<<"("<<p<<","<<g<<","<<y<<")"<<endl; 
    cout<<"Закрытый ключ x="<<x<<endl; 
     
    cout<<"\nШифруемый текст:"<<endl; 
    char m;
    cin>>m;
    while(inf.good()){ 
        int m=inf.get(); 
        if(m>0){ 
            cout<<(char)m; 
             
            int k=rand()%(p-2)+1; // 1 < k < (p-1) 
            int a= power(g,k,p); 
            int b= mul(power(y,k,p),m,p); 
            outf<<a<<" "<<b<<" "; 
        } 
    } 
 
    cout<<endl; 
 
    inf.close(); 
    outf.close(); 
    system("pause");
} 
 
void decrypt(int p,int x,string inFileName,string outFileName){ 
    ifstream inf(inFileName.c_str()); 
    ofstream outf(outFileName.c_str()); 
      setlocale( LC_ALL,"Russian" );
 
    cout<<"\nДешифрованый текст:"<<endl; 
 
    while(inf.good()){ 
        int a=0; 
        int b=0; 
        inf>>a; 
        inf>>b; 
         
        if(a!=0&&b!=0){ 
            //cout<<a<<" "<<b<<endl; 
         
            int deM=mul(b,power(a,p-1-x,p),p);// m=b*(a^x)^(-1)mod p =b*a^(p-1-x)mod p 
            char m=static_cast<char>(deM);
            outf<<m; 
            cout<<"m="<<m<<"";  
        } 
    } 
     
    cout<<endl; 
 
    inf.close(); 
    outf.close(); 
    system("pause");
}
 
int main(){
 
    srand(time(NULL));
   setlocale( LC_ALL,"Russian" );
 
    crypt(593,123,8, "in.txt","out_crypt.txt"); 
    decrypt(593,8,"out_crypt.txt","out_decrypt.txt");
    system("pause");
    return 0;
}
Doksim
 Аватар для Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
14.12.2013, 16:05     Ввод данных #4
попробуйте изучить что творится в порграмме, при помощи cout
oks1d
4 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
14.12.2013, 16:21  [ТС]     Ввод данных #5
Цитата Сообщение от Doksim Посмотреть сообщение
попробуйте изучить что творится в порграмме, при помощи cout
В функции crypt все понятно, я непойму почему не работает в функции decrypt

C++
1
 97    cout<<"m="<<m<<"";
nomyac
2 / 9 / 1
Регистрация: 12.10.2013
Сообщений: 43
14.12.2013, 16:49     Ввод данных #6
Не работает как функция зашифровки, так и расшифровки! Поставь переменную m[256] и увидишь, как программа работает.
oks1d
4 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
14.12.2013, 17:04  [ТС]     Ввод данных #7
Вот результат работы
Миниатюры
Ввод данных  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2013, 17:54     Ввод данных
Еще ссылки по теме:

C++ Ввод данных
C++ Ввод данных
C++ Ввод данных

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

Или воспользуйтесь поиском по форуму:
oks1d
4 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
14.12.2013, 17:54  [ТС]     Ввод данных #8
Если кто-то может что подсказать пожалуйсту прошу.
Yandex
Объявления
14.12.2013, 17:54     Ввод данных
Ответ Создать тему
Опции темы

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