помогите пожалуйста с функцией шифрования

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
123kiv
Сообщения: 2
Зарегистрирован: 18 мар 2011, 23:01

Добрый день. Пишу программу шифрования с использованием алгебры матриц. Есть функция умножения матрици на вектор(матрица-ключ, вектор-текст) и сама функция шифрования.

Код: Выделить всё

type
    TKey=array[1..3,1..3] of integer;
    TV=array [1..3] of integer;
function Mull(x:tv; key:TKey):tv;//функция умножения матрици на вектор
var v:tv;
     i,j,L:integer;
begin
       for i:=1 to 3 do
            begin
                  v[i]:=0;
                   for j:=1 to 3 do
                       v[i]:=v[i]+x[j]*Key[i,j];
            end;
       Mull:=v;
end;
//функция шифрования
function Endcode(s:string;Key:TKey):String;
var i,j,k:integer;
     c:char;
     v,x:TV;
     L:integer;
     r:string;
     l1:real;
begin
       r:='';
       L:=Length(s);
       L1:=strtofloat(inttostr(L))/3;
       for i:=1 to strtoint(floattostr(L1)) do
           begin
                  for j:=0 to 2 do
                       begin
                              k:=i*3+j;
                              if k<=L then c:=s[k] else c:=char(0);
                              x[i]:=ord(c);

                       end;
                              v:=Mull(x,Key);

                              if r<>'' then r:=r+' ';
                              r:=r+IntToStr(v[1]);
                              r:=r+' ';
                              r:=r+IntToStr(v[2]);
                              r:=r+' ';
                              r:=r+IntToStr(v[3]);
                              r:=r+' ';

           end;
       Endcode:=r;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Key:tkey;
x, v: tv;
s,t: string;
i,j,k:integer;
begin
memo2.Clear;
  Key[1,1]:=1;Key[1,2]:=4;Key[1,3]:=8;
  Key[2,1]:=3;Key[2,2]:=7;Key[2,3]:=2;
  Key[3,1]:=6;Key[3,2]:=9;Key[3,3]:=5;
s:=memo1.Text;
memo2.Text:=Endcode(s,Key);
end;
Для примера ввожу в memo1 3 пробела и в memo2 получаю 40229568 17512176 33219496, хотя должно получиться 416 384 640
Пожалуйста подскажите что не верно в функии Endcode
Ответить