Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2011, 15:30   #1
123kiv
Новичок
Джуниор
 
Регистрация: 01.03.2011
Сообщений: 2
По умолчанию Функция шифрования

Добрый день. Пишу программу шифрования с использованием алгебры матриц. Есть функция умножения матрици на вектор(матрица-ключ, вектор-текст) и сама функция шифрования.
Код:
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
123kiv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Методы шифрования lordseko Помощь студентам 1 23.12.2010 13:08
реализация шифрования. шифр Цезаря + Хэш-функция BlackThornGreed Помощь студентам 0 07.06.2009 10:21
шифрования Snake08 Паскаль, Turbo Pascal, PascalABC.NET 13 29.11.2008 00:20
Алгоритм шифрования Simply-Art Общие вопросы Delphi 14 01.02.2008 14:30
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50