Пишем свой генератор случайных чисел, который будет инициализироваться ключом(числом). Например лин. конгруэнтный метод, с заданными параметрами.
Шифрование:
В цикле генерируешь числа с своего генератора и "складываешь" с открытым
текстом, например побайтово. Получается шифротекст.
Под "складываешь" я имел ввиду сложение по модулю(для побайтового шифрования, модуль будет 256)
Дешифрование
Опять берем наш генератор, с теми же параметрами как и при шифровании(если знаем ключ).
И вычитаем из шифротекста, побайтово числа, которые выдает наш генератор. На выходе получается дешифрованный текст
Объяснение:
program an;
var n:integer;
s1,s2:string;
i,j:integer;
begin
s1[1]:='*';
s2[1]:=' ';
for j:=2 to n do
if s1[j-1]='*' then
s1[j]:=' '
else
s1[j]:='*';
if s2[j-1]='*' then
s2[j]:=' '
s2[j]:='*';
end;
j:=1;
for i:=1 to n do
if j=1 then
writeln(s1);
j:=0;
end
writeln(s2);
end.
Пишем свой генератор случайных чисел, который будет инициализироваться ключом(числом). Например лин. конгруэнтный метод, с заданными параметрами.
Шифрование:
В цикле генерируешь числа с своего генератора и "складываешь" с открытым
текстом, например побайтово. Получается шифротекст.
Под "складываешь" я имел ввиду сложение по модулю(для побайтового шифрования, модуль будет 256)
Дешифрование
Опять берем наш генератор, с теми же параметрами как и при шифровании(если знаем ключ).
И вычитаем из шифротекста, побайтово числа, которые выдает наш генератор. На выходе получается дешифрованный текст
Объяснение:
program an;
var n:integer;
s1,s2:string;
i,j:integer;
begin
s1[1]:='*';
s2[1]:=' ';
for j:=2 to n do
begin
if s1[j-1]='*' then
s1[j]:=' '
else
s1[j]:='*';
if s2[j-1]='*' then
s2[j]:=' '
else
s2[j]:='*';
end;
j:=1;
for i:=1 to n do
begin
if j=1 then
begin
writeln(s1);
j:=0;
end
else
begin
j:=1;
writeln(s2);
end
end;
end.
Объяснение: