Динамическая библиотека FCDLL.DLL

 

Компрессия данных

 

Клиент-FCM (начиная с версии 0.01.64) и ФБП-IP Мост (начиная с версии 1.7) обмениваются данными в компрессированном формате. Это существенно повышает скорость передачи данных по сетям Internet и увеличивает надежность связи за счет уменьшения вероятности возникновения ошибок, так как уменьшается время и объем передачи.

 

В качестве алгоритма компрессии был выбран свободно распространяемый алгоритм автором которого является Roberto Della Pasqua ( http://www.dellapasqua.com/delphizlib/ ). К сожалению, указанный сайт с некоторого времени не доступен.

 

 

 

  1. Сделан качественный шаг вперед по улучшению работы связки Клиент-FCM – Мост: введена компрессия передаваемых данных. Теперь перед передачей по сетям TCP/IP данные предварительно компрессируются. Использован скоростной алгоритм компрессии (скорость ~430 кб/сек на P266MMX), и довольно высокой степенью компрессии. Тестовый пример из 37000 хоз. операций размером файла в 7.4 Мбайт алгоритм ужал до 0.5 Мбайт, или в 14 раз!
  2. Алгоритм компрессии располагается во внешней динамической библиотеке FCDLL.DLL, которая поставляется в дистрибутиве. Начиная с версии 0.01.64 Клиент-FCM не будет работать без этой библиотеки. Подробную спецификацию библиотеки FCDLL.DLL смотри в посвященном ей разделе настоящего описания.

 

 

 

Шифрование данных

 

 

Клиент-FC, начиная с версии 0.03.00, и ФБП-IP Мост, начиная с версии 1.8,  обмениваются данными в зашифрованном виде. В качестве алгоритма шифрования выбран алгоритм по ГОСТ 28147-89, в реализации Hagen Reddmann  (HaReddmann@AOL.COM).

 

Выбор ГОСТ был сделан на основании нескольких соображений.

  1. Высокая скорость работы.
  2. Высокая криптоустойчивость.
  3. Алгоритм описан в ГОСТ и не является предметом патентной или иной защиты.

 

 

 

Безопасность передаваемых данных является довольно серьезным вопросом. Я заявляю, что предпринял все необходимые меры для того, чтобы обеспечить пользователю максимально возможную защиту передаваемых данных, насколько это было в моих силах. Однако я спокойно отношусь и к возможному недоверию со стороны пользователя.

 

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

 

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

 

 

Спецификация библиотеки FCDLL.DLL

 

 

function fcdllver: pChar; stdcall; external 'fcdll.dll';

 

Возвращает указатель на строку содержащую информацию о версии библиотеки.

 

procedure   compress(var p :Pointer; var z :int64);                    stdcall; export;

procedure decompress(var p :Pointer; var z :int64);                    stdcall; export;

procedure    decrypt(var p :Pointer; var z :int64; const Key :pChar);  stdcall; export;

procedure    encrypt(var p :Pointer; var z :int64; const Key :pChar);  stdcall; export;

 

p указатель на область памяти подлежащий компрессии/декомпрессии, шифрованию/дешифровке;

z размер этой области памяти;

 

Процедуры изменяют значения p и z. После завершения работы процедуры эти переменные указывают на области памяти, содержащие результат работы процедур.

 

 

[EOF]