Реферат: Арифметика на службе защиты

14. 25600 = 160^2

...

Такие S[i] следуют какое-то время, но затем становится опять понятно их происхождение: шаги 31-36 добавляют к этой "контрольной сумме" цифры поля "код".

Тут я понял, что дело близко к развязке. Но не понял, что настолько. Первая версия - промежуточные S[i] - какие-то магические константы. Приготовился даже поискать возможный их формирователь. Для начала решил все же поискать их в файле... Да, да, они там были...

Осталось привести код remainder'а. Писать его на асм, как я обычно делаю, было как-то не прикольно. Так что извините за пас. Но и в нем я все же обошелся без real-чисел. В структуре, объявленной в программе, поясняется, зачем нужны были добавочные байты (S[i]).

{$A-}

{$N+}

{$S-}

{$D-}

const

{INN: string[11] = '0000000000';}

INN: string[11] = '7575757575'; { result must be 359683 }

TypeSetup: string[11] = 'Преферанс';

Code: string[7] = '014194';

Version: string[7] = 'Вер 46';

type

tExtPassData =

record

INN: array[1..10] of byte; { ИНН - вместе с ключом }

TypeSetup: array[1..10] of byte; { Тип конфигурации: Преферанс, etc }

Fillers: array[1..10] of byte; { Пробелы }

Code: array[1..6] of byte; { Код }

Version: array[1..6] of byte; { Версия программы: Вер 46 и т.п. }

end;

var

sum,i,PassByte: longint;

ExtPassData: tExtPassData;

begin

writeln; writeln('Preferance password remainder started!'); writeln;

К-во Просмотров: 1892
Бесплатно скачать Реферат: Арифметика на службе защиты