Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функция шифрования 
:(
    Опции темы
123kiv
Дата 20.3.2011, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 18.3.2011

Репутация: нет
Всего: нет



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

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
PM MAIL   Вверх
Atos
Дата 21.3.2011, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 2.9.2004
Где: Омск

Репутация: нет
Всего: нет



А воспользоваться дебаггером религия не позволяет?

Компилятора под рукой нет, но думаю, ошибка тут x[i]:=ord©; индекс вроде не тот
PM MAIL   Вверх
Snowy
Дата 21.3.2011, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



А мне кажется, что всё верно.
Просто используется Delphi 2009+, в которой строки в юникоде.
А поэтому символ 16, а не 8 бит.
Поэтому и принимаемые им значения не 0..255, а 0..65536
Поэтому и результат на порядок больше.
PM MAIL   Вверх
Atos
Дата 21.3.2011, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 2.9.2004
Где: Омск

Репутация: нет
Всего: нет



В любом случае тут баг  smile 
Код

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;

Цикл-то по j, а присвоение одному и тому же i-му элементу
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0496 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.