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

Китайская теорема. Информ. безопасность - C++

Восстановить пароль Регистрация
 
alex-net
3 / 3 / 1
Регистрация: 27.11.2012
Сообщений: 171
19.01.2014, 20:49     Китайская теорема. Информ. безопасность #1
Китайская теорема. Помогите ребят перевести с pascal на C++

Pascal
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
var x,s:uint64;
yy,nn,mm,kk:array [1..3] of int64;
p,q,f,n,cc,y,e1,d,m0:int64;
i,j:integer;
 
function st(x,e1,n:integer):integer;
var i,k1:integer;
begin
k1:=x;
for i:=2 to e1 do
begin
k1:=k1*x;
k1:=k1 mod n;
end;
result:=k1;
end;
 
function modr(m,n:integer):integer;
var g,mm,nn:uint64;
h,kk:integer;
begin
mm:=m;nn:=n;
while (h=0) do
begin
g:=g+mm;kk:=kk+1;
if (g mod nn = 1) then
h:=1;
end;
result:=kk;
end;
 
///корень из числа аа, из степени bb
function coren(aa,bb:integer):real;
var a,b:real;
begin
a:=aa;
b:=bb;
b:=1/b;
result := Exp(b*Ln(a)); 
end;
 
begin
 
write('введите x ');
readln(x);
e1:=3;
for j:=1 to 3 do
begin
write('введите n ');
readln(n);
nn[j]:=n;
//f:=(p-1)*(q-1);
y:=st(x,e1,n);
writeln('зашифрованное = ',y);
yy[j]:=y;
end;
mm[1]:=nn[2]*nn[3];
writeln('mm = ',mm[1]);
mm[2]:=nn[1]*nn[3];
writeln('mm = ',mm[2]);
mm[3]:=nn[1]*nn[2];
writeln('mm = ',mm[3]);
m0:=nn[1]*nn[2]*nn[3];
 
kk[1]:=modr(mm[1],nn[1]);
writeln('kk = ',kk[1]);
kk[2]:=modr(mm[2],nn[2]);
writeln('kk = ',kk[2]);
kk[3]:=modr(mm[3],nn[3]);
writeln('kk = ',kk[3]);
 
s:=mm[1]*yy[1]*kk[1]+mm[2]*yy[2]*kk[2]+mm[3]*yy[3]*kk[3];
writeln('s = ',s);
x:=s mod m0;
 
writeln('расшифрованное = ',coren(x,e1));
end.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2014, 20:49     Китайская теорема. Информ. безопасность
Посмотрите здесь:

C++ Теорема Виета
Теорема синусов C++
Китайская теорема об остатках
C++ Информационная безопасность и программирование на С++
C++ Теорема Пифагора
Китайская кодировка на выходе C++
C++ Методы построения простых больших чисел, теорема Поклингтона
C++ Теорема Пифагора

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GLYZExXx
0 / 0 / 0
Регистрация: 19.01.2014
Сообщений: 2
19.01.2014, 22:54     Китайская теорема. Информ. безопасность #2
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
#include <math.h> 
#include <iostream>
#include <conio.h>
#include <ctime>
using namespace std;
 
int x, s;
int yy[3], nn[3], mm[3], kk[3];
int p, q, f, n, cc, y, e1, d, m0;
int i, j;
 
int st(int x,int e1,int n)
 
{
int i, k1;
k1 = x;
for (i = 2; i < e1;i++) 
{
k1 = k1*x;
k1= k1 % n;
}
return k1;
}
 
int modr(int m,int n)
{
int g, mm, nn, h, kk;
mm = m; nn= n;
do
{
g = g + mm; kk= kk + 1;
if ( fmod(g,nn) == 1) 
h = 1;
} 
while (h = 0);
return kk;
}
 
///корень из числа аа, из степени bb
float coren(int aa, int bb)
{
float a, b;
a = aa;
b= bb;
b= 1 / b;
return exp(b*log(a));
}
 
void main();
{
    cout << "введите x ";
    cin>>x;
    e1 = 3;
    for (j = 1; j < 3;j++)
    {
        cout << "введите n ";
        cin>>n;
        nn[j] = n;
        //f:=(p-1)*(q-1);
        y = st(x, e1, n);
        cout << "зашифрованное = ", y;
        yy[j] = y;
    }
    mm[1] = nn[2] * nn[3];
    cout << "mm = "<< mm[1];
    mm[2] = nn[1] * nn[3];
    cout << "mm = "<< mm[2];
    mm[3] = nn[1] * nn[2];
    cout << "mm = "<< mm[3];
    m0 = nn[1] * nn[2] * nn[3];
 
    kk[1] = modr(mm[1], nn[1]);
    cout << "kk = "<< kk[1];
    kk[2] = modr(mm[2], nn[2]);
    cout << "kk = "<< kk[2];
    kk[3] = modr(mm[3], nn[3]);
    cout << "kk = "<< kk[3];
 
    s = mm[1] * yy[1] * kk[1] + mm[2] * yy[2] * kk[2] + mm[3] * yy[3] * kk[3];
    cout << "s = "<< s;
    x = s % m0;
 
    cout << "расшифрованное = ", coren(x, e1);
}
Не польностью перевел. Не знаю что такое modr.
Yandex
Объявления
19.01.2014, 22:54     Китайская теорема. Информ. безопасность
Ответ Создать тему
Опции темы

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