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

Асинхронный алгоритм RSA - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ задачка по вычислению интерполянта http://www.cyberforum.ru/cpp-beginners/thread376755.html
вообщем есть задачка 1.Найти значения функции F(x) в указанных точках x(j) и сравнить с точными значениями f(x(j))-F(x(j)) 2. Вывести на экран графики f(x),F(x) f(x)=1/x a=0.1 b=1.1 x(j) меняется от 0,1 до 1,5 с шагом 0,04 Это все нужно сделать по формуле Бесселя число n варьировать от 4 до 10
C++ разбор ошибок всем доброго времени суток! написал прогу которая работаес с базой данных. в студии все прекрасно работало, но нада на Борланд С++ 3.1 . начала переписывать, столкнулся с некоторыми проблемами: 1. программа плохо реагирует на двузначный ввод комманд (тоесть, например если я ввожу команду "1", то все ок, если "12", то воспринимает это как две команды - "1" и "2") 2. непонятно ведет себя команда... http://www.cyberforum.ru/cpp-beginners/thread376753.html
Просьба уточнить часть кода. C++
Доброго дна. Хотел бы уточнить что выполняет строка: Ranch->Fly(); Код функции: for(i=0;i<NumberHorses;i++) { Ranch->Fly(); delete Ranch;
Помогите расписать программу C++
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; int main(void) { char s,*s2; char *ptr,*ptr2; char nextsymb;
C++ Примеры на Тurbo C++ http://www.cyberforum.ru/cpp-beginners/thread376736.html
Кто умеет решать, помогите..
C++ С++ Задачи на двумерный массив. Задача на двумерный массив. Дана целочисленная прямоугольная матрица. Определить сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент. подробнее

Показать сообщение отдельно
N!K
19 / 19 / 1
Регистрация: 04.03.2010
Сообщений: 86

Асинхронный алгоритм RSA - C++

02.11.2011, 18:07. Просмотров 1115. Ответов 7
Метки (Все метки)

Подскажите в чем ошибка. для ввода сообщения использую латинский алфавит нижнего регистра, все работает кроме расшифровки букв x y z.
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
132
133
134
135
136
137
138
139
140
141
142
143
144
#include <iostream>
#include <windows.h>
#include <string>
#include <regex>
#include <cmath>
#include <iomanip>
using namespace::std;
//------------------------------------------
int p, 
    q, 
    n, 
    fi, 
    closedKey,  
    openKey = 1,
    ascii = 96;
unsigned long charSqr,
    res;
double charBuf;
string mes, encMes, strToEnc, strToDec; 
int crypt[255],
temp[255];
unsigned int buf;
char charEnc;
//------------------------------------------
bool nod(int a, int n)
{
 int x=0;
 for (int i=1;i<=a; i++)
    {
         if (n%i==0 && a%i==0) {x++;}
    }
 if (x==1) return true;
 else return false;
}
//------------------------------------------
bool IsSimpleNumber(int n)
{
  if(n<2) return false;
    for(int i=2;i*i<=n;++i)
      if(n%i==0) {
          cout << "Chislo ne yavlyaetsya prostim" << endl; 
          Sleep(750);
          system( "cls" );
          return false;
      }
  return true;
}
//------------------------------------------
string Crypt(string message)
{
    encMes = "";
    for ( int i = 0; i < message.length(); i++ )
    {
        charBuf = message[i]-ascii; //iz ascii
        charSqr = pow( charBuf, openKey ); //simvol v stepeni
        res = (charSqr % n);//mod
        charEnc = res+ascii;//v ascii
 
        cout << "Ei = " << "(" <<message[i] << ")" << setw(3) 
            << charBuf << "^" << openKey  
            << " mod " << n << " = " << setw(10) << charSqr 
            << " mod " << n << " = " << setw(4) << res 
            << "  " << charEnc << "  " << static_cast<short>(charEnc) << "\n";
        
        encMes +=  charEnc;
    }
    encMes+="\0";
    return encMes;
}
string Decrypt(string message)
{
    encMes = "";
    for ( int i = 0; i < message.length(); i++ )
    {
        charBuf = message[i]-ascii; //iz ascii
    
        charSqr = pow( charBuf, closedKey ); //simvol v stepeni
        res = (charSqr % n);//mod
        charEnc = res+ascii;//v ascii
//
        cout << "Ei = " << "(" <<message[i] << ")" << setw(3) 
            << charBuf << "^" << openKey  
            << " mod " << n << " = " << setw(10) << charSqr 
            << " mod " << n << " = " << setw(4) << res 
            << "  " << charEnc << "  " << static_cast<short>(charEnc) << "\n";
        encMes += charEnc;
    }
    encMes+="\0";
    return encMes;
}
 
 
//------------------------------------------
int main()
{
//enum Alf{а = 1, б, в, г, д, е, ё, ж, з, и, й, к, л, м, н, о, п, р, с, т, у, ф, х, ц, ч, ш, щ, ъ, ы, ь, э, ю, я};
//Alf ch;
setlocale ( LC_ALL, "Rus" );
//--------------------------``----------------
do{
    cout << "p = ";
    cin >> p;
}while(!IsSimpleNumber(p));
 
do{
    cout << "q = ";
    cin >> q;
}while(!IsSimpleNumber(q));
 
//------------------------------------------
n = p * q;
fi = ( p - 1 ) * ( q - 1 );
do{
    cout << "Vvedite sekretnyi kluch ClosedKey ( vzaimno prostoe s " << fi << " = ";
    cin >> closedKey;
    system( "cls" );
}while( !nod( fi, closedKey ) );
 
while ( ( ( openKey * closedKey ) % fi !=1 ) )
{ 
    openKey++;
};
cout << "p =\t " << p << "\nq =\t " << q 
    << "\nn =\t " << n << "\nfi = (p-1)*(q-1) =    " << fi 
    << "\nzakritiyi kluch (closedKey) = " << closedKey << "\notkrityi kluch (openKey) =  " << openKey << endl;
cout << "Vvedite soobchenie dlya zashifrovki -> ";
cin >> mes;
//mes = "abcdefghijklmnopqrstuvwxyz";
//mes = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
//cout << mes;
//------------------------------------
cout << endl << endl;
strToEnc = Crypt( mes );
cout << "\nzashifrovannoe soobchenie:  " << strToEnc << endl;
cout << "\n\n";
for ( int i = 0; i <= mes.length(); i++ )
    cout << temp[i] << "   " << crypt[i] << endl;
strToDec = Decrypt( strToEnc );
cout << "\nrasshifrovannoe soobchenie: " << strToDec << endl;
 
//system( "cls" );
system( "pause" );
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru