0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 1
|
|
1
|
Дешифровка текста методом гаммирования
10.11.2015, 20:07. Показов 892. Ответов 0
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
| Var A, B, C: array[0..256] of longint;
G: array[0..256] of real;
i: integer;
action: byte;
z: char;
Fin, Fout, Foutout: text;
begin
Write('Что будем делать, шифровать(1) или дешифровать(2) файл: '); Readln(action);
case action of
1: begin
Assign(Fin, 'Fin.txt'); Reset(Fin);
Assign(Fout, 'Fout.txt'); Rewrite(Fout);
Write('Введи А: '); Readln (a[0]);
Write('Введи В: '); Readln (b[0]);
Write('Введи С: '); Readln (c[0]);
while not Eof(Fin) do
while not eoln(Fin) do begin
Read(Fin, z);
i:= i+1;
a[i]:=(171*a[i-1]) mod 30269;
b[i]:=(172*b[i-1]) mod 30307;
c[i]:=(170*c[i-1]) mod 30323;
G[i]:=(a[i]/30269+b[i]/30307+c[i]/30323)*100;
if G[i]>256 then G[i]:=G[i]-255;
Write(Fout, chr(ord(z) xor trunc(G[i])));
if Eoln(Fin) then begin Readln(Fin); Writeln(Fout); end;
end;
Close(Fin); Close(Fout);
end;
2: begin
Assign(Fout, 'Fout.txt'); Reset(Fout);
Assign(Foutout, 'Foutout.txt'); Rewrite(Foutout);
Write('Введи А: '); Readln (a[0]);
Write('Введи В: '); Readln (b[0]);
Write('Введи С: '); Readln (c[0]);
while not Eof(Fout) do
while not eoln(Fout) do begin
Read(Fout, z);
i:=i+1;
a[i]:=(171*a[i-1]) mod 30269;
b[i]:=(172*b[i-1]) mod 30307;
c[i]:=(170*c[i-1]) mod 30323;
G[i]:=(c[i]/30323+b[i]/30307+a[i]/30269)*100;
if G[i]>256 then G[i]:=G[i]-255;
Write(Foutout, chr(trunc(G[i]) or ord(z)));
if Eoln(Fout) then begin Readln(Fout); Writeln(Foutout); end;
end;
Close(Fout); Close(Foutout);
end;
end;
end. |
|
Добавлено через 2 часа 30 минут
Вообщем я разобрался сам:
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
| Var A, B, C: array[0..256] of longint;
G: array[0..256] of real;
i: integer;
action: byte;
z: char;
Fin, Fout, Foutout: text;
begin
Write('Что будем делать, шифровать(1) или дешифровать(2) файл: '); Readln(action);
case action of
1: begin
Assign(Fin, 'Fin.txt'); Reset(Fin);
Assign(Fout, 'Fout.txt'); Rewrite(Fout);
Write('Введи А: '); Readln (a[0]);
Write('Введи В: '); Readln (b[0]);
Write('Введи С: '); Readln (c[0]);
while not Eof(Fin) do
while not eoln(Fin) do begin
Read(Fin, z); // Посимвольное чтение из файла
i:= i+1; // Счётчик
a[i]:=(171*a[i-1]) mod 30269;
b[i]:=(172*b[i-1]) mod 30307;
c[i]:=(170*c[i-1]) mod 30323;
G[i]:=(a[i]/30269+b[i]/30307+c[i]/30323)*100; // Тут будет число с плавающей точкой
if G[i]>256 then G[i]:=G[i]-255;
Write(Fout, chr(ord(z) xor trunc(G[i]))); //
if Eoln(Fin) then begin Readln(Fin); Writeln(Fout); end;
end;
Close(Fin); Close(Fout);
end;
2: begin // Дешифровка
Assign(Fout, 'Fout.txt'); Reset(Fout);
Assign(Foutout, 'Foutout.txt'); Rewrite(Foutout);
Write('Значение А при шифровании: '); Readln (a[0]);
Write('Значение В при шифровании: '); Readln (b[0]);
Write('Значение С при шифровании: '); Readln (c[0]);
while not Eof(Fout) do
while not eoln(Fout) do begin
Read(Fout, z);
i:=i+1;
a[i]:=(171*a[i-1]) mod 30269;
b[i]:=(172*b[i-1]) mod 30307;
c[i]:=(170*c[i-1]) mod 30323;
G[i]:=(c[i]/30323+b[i]/30307+a[i]/30269)*100;
if G[i]>256 then G[i]:=G[i]-255;
Write(Foutout, chr(trunc(G[i]) xor ord(z)));
if Eoln(Fout) then begin Readln(Fout); Writeln(Foutout); end;
end;
Close(Fout); Close(Foutout);
end;
end;
end. |
|
0
|