![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
шифр Вижинера [D6]
Маша_Семенова © (2007-03-15 19:01:00)Уважаемые мастера.
Есть ли у кого алгоритм
шифрования Вижинера.
Спасибо.
Leonid Troyanovsky (2007-03-15 21:20:00) [1]
> Маша_Семенова (15.03.07 19:01)
> Есть ли у кого алгоритм
> шифрования Вижинера.
http://groups.google.com/group/fido7.ru.delphi/browse_thread/thread/865bf0adf13dfc43
--
Regards, LVT.
S@shka (2007-03-15 19:54:00) [2]Маша_Семенова ))))
Ох, Ма...ша )
S@shka (2007-03-15 19:50:00) [3]Шифр Вижинера:
program job3_Vishiner;
uses crt;
var
a,b,c,d:string;
i,j,k,t,q:integer;
begin
t:=1;
writeln('Enter text for coding');
readln(a);
writeln('Enter code-word');
readln(d);
q:=length(d);
c:='';
b:='abcdefghijklmnopqrstuvwxyz';
for i:=1 to length(a) do
for j:=1 to length(b) do
begin
if a[i]=b[j] then
begin
if t>length(d) then
t:=1;
for k:=1 to length(b) do
begin
if d[t]=b[k] then
q:=j+k-1;
if q>26 then
q:=q-26;
end;
c:=c+b[q];
t:=t+1;
end;
end;
writeln(c);
readkey;
end.
Симметричный ключ (или использование лог преобразований):
Program Job4_Sim_key;
uses crt;
var
t:string;
n,z,k,i,j:integer;
mas,sam:array[1..100] of string;
abc,buf:string;
begin
abc:='abcefgh01234567890xyz';
z:=1;
k:=0;
writeln('Enter text for coding');
readln(t);
writeln('Chose kol-vo el-tov v gruppe');
readln(n);
for i:=1 to length(t) do begin
mas[z]:=mas[z]+t[i];
k:=k+1;
if k=n then begin
k:=0;
z:=z+1;
end;
end;
if length(mas[z])<n then
for i:=1 to (n-length(mas[z])) do begin
mas[z]:=mas[z]+abc[i];
end;
k:=z;
for i:=1 to z do begin
buf:=mas[i];
for j:=n downto 1 do begin
sam[k]:=sam[k]+buf[j];
end;
k:=k-1;
end;
writeln('Open text');
for i:=1 to z do
write(mas[i],'-');
writeln('');
writeln('Coding text');
for i:=1 to z do
write(sam[i],'-');
readkey;
end.
Применение гаммирования:
Program job6_Gamma;
uses crt;
var
t,s:string;
i,j:integer;
masS,masG,masR:array [1..100] of integer;
abc,buf,gamma:string;
begin
abc:='abcefghijklmnopqrstuvwxyz';
s:='';
writeln('Enter text for coding');
readln(t);
randomize;
for i:=1 to length(t) do
gamma:=gamma+abc[RANDOM(24)+1];
writeln('Text: ',t);
writeln('Gamma: ',gamma);
{Ocifrovka vvedennogo texta}
for i:=1 to length(t) do begin
for j:=1 to length(abc) do
If t[i]=abc[j] then
masS[i]:=j;
end;
{Ocifrovka Texta gammi}
for i:=1 to length(gamma) do
for j:=1 to length(abc) do
if gamma[i]=abc[j] then
masG[i]:=j;
{Ri=(Si+G) mod (k-1)}
for i:=1 to length(t) do begin
masR[i]:=(masS[i]+masG[i]) mod (length(t)-1);
if masR[i]=0 then {proverka esli ostatka net}
s:=s+'\';
for j:=1 to length(abc) do
if masR[i]=j then
s:=s+abc[j];
end;
writeln('Coding-text: ',s);
readkey;
end.