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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ускорить и улучшить алгоритм шифрования (2й), Delphi 7 
:(
    Опции темы
tishaishii
Дата 30.3.2007, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

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



UDF: Собственно, симметричный алгоритм шифрования сделал такой:
Код

function KeySum(key:PChar):Integer; cdecl; export;
var len, res:Integer;
begin
  len:=length(String(key));
  res:=0;
    while(len>0)do
  begin
        res:=res+ord(String(key)[len]);
        dec(len);
    end;
  result:=res mod 255;
end;

function Crypt(value:PChar; idfirm:PChar):PChar; cdecl; export;
var sum, len, i:Integer;
    res: String;
begin
  Result:=nil;
  len:=length(String(value));
    if (len>0) then
  begin
        sum:=KeySum(idfirm);
    res:='';
    i:=1;
        while(len>0) do
    begin
      res:=res+chr(ord(String(value)[i]) xor ((sum xor len) xor i));
      dec(len);
      inc(i);
        end;
    Result:=PChar(res);
    end;
end;

Надо бы как-то ускорить и улучшить его.

Это сообщение отредактировал(а) Alexeis - 30.3.2007, 20:31
PM MAIL ICQ Skype   Вверх
Yanis
Дата 30.3.2007, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

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



Цитата(tishaishii @  30.3.2007,  20:37 Найти цитируемый пост)
Надо бы как-то ускорить и улучшить его.

А что тут упрщать то smile Два цикла всего...


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
tishaishii
Дата 30.3.2007, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

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



Ну не знаю. Думаю, что sum, len и res - лишние.
Может, asm?
PM MAIL ICQ Skype   Вверх
dumb
Дата 31.3.2007, 03:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



tishaishii, пару советов:
не придумывай шифрование. используй готовое, пока не отягощен хотя бы минимальными знаниями в данной области. нагромаждение xor'ов не повышает степень "зашифрованности". "на глазок" можно оценить качество(это даже не качество, а скорее степень скрытости от любопытных(домохозяек)) "шифровки" путем передачи функции длинной последовательности одинаковых символов - должна получиться "каша", а не повторения последовательностей.

и ассемблер тебе не поможет ни в этом случае, не в другом(рядом какая-то тема). опять же до тех пор, пока не изучишь его в объеме, достаточном для "соревнования" с оптимизирующими компиляторами(хотя дельфи таковым можно назвать с большой натяжкой).
PM MAIL   Вверх
tishaishii
Дата 31.3.2007, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

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



Ооочень пафосный ответ, о, Великий.
Ты же не знаешь всю предисторию, о, Мудрец.
PM MAIL ICQ Skype   Вверх
W4FhLF
Дата 31.3.2007, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



tishaishii, всё правильно сказано. Если под словом "улучшить" имелось ввиду сделать более стойким, то тебе придётся отказаться от xor'a или комбинировать. А ускорять тебе нечего, кроме одного: Вместо типов string используй pchar и днамическое выделение памяти(размер-то тебе известен), а то при использовании типов string в твоём случае больше половины времени тратится на перераспределение для строки. 




--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
tishaishii
Дата 31.3.2007, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

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



Слушай: ты приходишь в магазин покупать видюху и знаешь какую надо, она там есть в наличии и по цене подходит вполне. А продавец, сволочь, всё время тебя мучает своими домыслами и пересудами: "Лучше купите то, это - [censored33! Пожалуйста, соблюдайте элементарные правила приличия при общении на форуме], я лучше знаю". И думаешь: "куда я попал?". Продавец - сам идиот.

Я не прошу советов и ваших домыслов, я прошу, пожалуйста, помогите ускорить и улучшить алгоритм, который я предложил.
PM MAIL ICQ Skype   Вверх
Yanis
Дата 1.4.2007, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

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



Цитата(tishaishii @  31.3.2007,  19:43 Найти цитируемый пост)
Я не прошу советов и ваших домыслов, я прошу, пожалуйста, помогите ускорить и улучшить алгоритм, который я предложил.

Твой алгоритм нельзя улучшить. Улучшенная версия -- это уже совсем другой принцип и алгоритм.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
W4FhLF
Дата 1.4.2007, 07:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



tishaishii, ты ещё раз перечитай мой пост и не дерзи, я тебе указал слабое место, которое можно оптимизировать. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
dumb
Дата 1.4.2007, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



Цитата(tishaishii @  31.3.2007,  18:43 Найти цитируемый пост)
ты приходишь в магазин покупать видюху и знаешь какую надо, она там есть в наличии и по цене подходит вполне. А продавец, сволочь, всё время тебя мучает своими домыслами и пересудами: "Лучше купите то, это - [censored33! Пожалуйста, соблюдайте элементарные правила приличия при общении на форуме], я лучше знаю". И думаешь: "куда я попал?". Продавец - сам идиот.

если покупатель начинает доставать продавца вопросами "а как улучшить эту видюху, как сделать ее более быстрой, и чтоб памяти побольше", то продавец, вполне обоснованно, предложит другую видеокарту. так что идиот в данном случае - покупатель.
свободен.
PM MAIL   Вверх
tishaishii
Дата 2.4.2007, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

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



Если продавца стал спрашивать, то считаешь, что он больше знает. А продавец - его роль такая: продавать, а если его это раздражает или ещё какие неудобства ему причиняет - ему можно просто уволиться, чтобы избежать этого. Вспоминаются советсике магазины, где воняет старой колбасой и за прилавками стоят старые толстые продавщицы, которым всё пофиг и на всех.
Наговорили очень много, а такой ерунды сделать не сумели.
Об чём это может говорить.

Это сообщение отредактировал(а) tishaishii - 2.4.2007, 09:26
PM MAIL ICQ Skype   Вверх
Alexeis
Дата 2.4.2007, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



tishaishii, Этот алогритм изначально страдает проблемой неверной передачи данных.
Строка при выходе из функции автоматически удаляется, если не увеличен ее внутренний счетчик ссылок. Этот счетчик меняется только если String присваивается String-у, а тут такого не происходит, потому по выходу из процедуры память строки считается освобожденной и может использоваться любыми другими процедурами. Вероятнее всего это произойдет при вызове именно функции из этой библиотеки, так как менеджер памяти у библиотеки и у программы разный. Почему строка сразу же не портиться, а потому что менеджер памяти не может освободить для Windows слишком маленький фрагмент памяти, но он может его выделить повторно для другой процедуры, если ей нужен небольшой фрагмент памяти, тогда она приспокойно запишет свои данные поверх имеющихся и возникнет непонятный глюк.
    Result:=PChar(res); - вот так делать нельзя впринципе. Это ошибка, которая всплывет где-нибудь ниже по коду. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
ama_kid
Дата 2.4.2007, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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



tishaishii
Я, в общем-то, согласен со многим из того, что здесь говорилось, но если уж тебе так хочется оптимизировать именно твой алгоритм, то навскидку могу предложить так:
Код

function KeySum(key:PChar):Integer; cdecl; export;
begin
  result:=0;
  while(Key^>#0)do
    begin
       result:=result+ord(Key^);
       inc(Key);
    end;
  result:=result mod 255;
end;

function Crypt(value:PChar; idfirm:PChar):PChar; cdecl; export;
var sum, i:Integer;
    res: String;
begin
  Result:=nil;
  if (StrLen(value)>0) then
  begin
    sum:=KeySum(idfirm);
    res:='';
    i:=1;
    while(value^>#0) do
     begin
      res:=res+chr(ord(value^) xor ((sum xor StrLen(value)) xor i));
      inc(value);
      inc(i);
     end;
    Result:=PChar(res);
  end;
end;

Можно, конечно, еще поизвращаться во второй функции, но боюсь ощутимого прироста производительности или экономии не получится... smile 


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
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.0644 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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