Алгоритмы

Очень часто, когда приходится иметь дело с чем-то сложным, мы стараемся найти готовое решение в сети Internet. Но иногда бывает так, что этого решения нет и приходится предпринимать какие-то активные действия для достижения поставленной цели. Некоторое время назад доступ к информации был затруднен и приходилось самому изобретать что-то новое. К такому «новому» можно отнести всевозможные алгоритмы. К таковым относятся, например, алгоритмы сжатия информации, её кодирование и обработки. Ярким примером таких алгоритмом, служит серия самописных «кодеков», как бы мы назвали их сейчас. Мне пришлось в свое время разработать кодеки для обеспечения безопасности передаваемой информации, назвал я её тогда - TCD. Ниже пойдет речь именно о них, но стоит отметить, что сейчас эта тема не актуальна.

TCD

С 2000 года все программные проекты корпорации D&D стали подчинятся определенным правлам защиты. Первоначально эти правила касались только данных внутреннего программного значения. То есть предполагалась защита информации системного значения - логи программ, файлы конфигурации и настройки, данные в самих программах и т.д. Позднее защите подверглись и все переменные, которыми программы опрерируют в процессе своей работы. Из-за непрерывного роста границ защиты данных решено было эти правила систематизировать и объединить в систему типов кодирования даннх- TCD (Type Coding Data). В настоящее время эта система охватила уже пользовательские данне, базы данных, электронные таблицы и многое другое, что способно нести в себе ценную информацию.

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

TCD-05 - это пакетный алгоритм кодирования, в отличае от TCD-04. Пакетное кодирование обеспечивает большую надежность защиты по сравнению с потоковым, несмотря на сравнительно низкую скорость работы пакетного алгоритма.

TCD-05 4.00 стал более компактный и у него изменился, в сторону упрощения, интерфейс между непосредственно алгоритмом и процедурой. Ниже хотелось бы показать примеры использования интерфейса алгоритма.

'DESCRIPTION : Алгоритм кодирования/декодирования по технологии TCD05
'REQUIREMENTS: Необходимо соблюдать ограничения на длину входной строки
'              которая должна лимитироваться значением 65536/2-1 и 1
'              При передаче аргумента в виде байта должен подаваться 1 байт
'              или слово "init" иначе функция не выполнится как надо
'INTERFACE   : Функция вызывается следующим образом:
'                 инициализация --> tcd05("init", keycode)
'     Кодирование/декодирование --> tcd05(Ch$, tcd05.code)
'   - keycode - Ключ, который должен быть производным от пароля пользователя
'   - Ch$     - Вводный символ процесса
'USED        : Для использования алгоритма необходимо внедрить файл модуля
'              или использовать как самостоятельный модуль. В первом варианте
'              пример необходимо изэять, а во втором - добавить в начало кода
'              строку: DECLARE FUNCTION tcd05$ (inputbyte$, curkey!)
'EXAMPLE     : Пример смотрите ниже

S$ = "Пример кодирования примитивной строки размером в пределах 65536/2-1"
CLS
keycode = 1234
PRINT tcd05("init", keycode)
FOR i = 1 TO LEN(S$)
 Ch$ = MID$(S$, i, 1)
 S.code$ = S.code$ + tcd05(Ch$, tcd05.code)
NEXT i
PRINT S.code$
'Декодирование
keycode = 1234
PRINT tcd05("init", keycode)
FOR i = 1 TO LEN(S.code$)
 Ch$ = MID$(S.code$, i, 1)
 VS.code$ = VS.code$ + tcd05(Ch$, keycode)
NEXT i
PRINT VS.code$