Я не очень разбираюсь в специфике языков программирования, поэтому пишу эту тему для того что может быть ктото прояснит мне некоторые белые пятна в моем знании. Поэтому все нижеописанное ИМХО и посему если что то технически неправильно, прошу указать и обьянить невозможность невозможной вещи.
Итак сама теория.
А теория такова. В старых (или во всех языках программирования?) при компиляции программы (в данном случае я брал старый добрый паскаль), в программу если та использует функции случайных чисел (далее - рандом), закладывается изначально некая псевдо случайная цепочка чисел (ПСЦ), которая неизменна для программы где бы и когда бы ее не запустили бы. ПСЦ можно в самой программе генерировать новую, дабы каждый раз при запуске действительно были бы случайные числа, возпользовавшись специальной функцией (randomize).
Итак для чего нужна эта ПСЦ и как работает архиватор?
Что бы ответить на этот вопрос я опишу как работает разархиватор.
Разархиватор, он же заархивированный файл маленькая программа, которая в примитиве делает следущее:
Код: Выделить всё
For I:=1 to archived_file_len do
file.append(filename_extract,chr(random(0,255)))
EndТакого языка программирования не существует, что описан выше, но принцип таков. Для счетчика от 0 до размера в байтах заархивированного файла (оригинал) делать: дописать в файл разархивации символ который получается на основе случайного числа от 0 до 255.
А получается следущее, что как бы из случайных чисел - "из воздуха" генерируется файл идентичный оригиналу. Обьясняю. В этой программе ни в коем случае не используется randomize, поэтому ПСЦ для рандома этой программы одно и тоже. Но если программу чуть чуть модифицировать, то ПСЦ при компиляции/в готовом бинарнике уже другой. Поскольку нам нужен ПСЦ который даст для выше написанной программы такие числа, что при преобразовании в символы, а затем в набор символов они дадут файл идентичный оригиналу. Задача же архиватора: каждый раз пересобирать программу разархиватор что бы получить нужный ПСЦ. То есть до тех пор пока не будет найдена программа которая при запуске создаст файл идентичный оригиналу. Увы, на поиск такой программы может уйти бесконечно много времени, в зависимости от размера в символах оригинала.
Те кто читал рассказ про обезьянок и печатные машинки думаю поймет.
Вопрос в другом. Кто нибудь обьясните мне метод генерации языком этого изначального ПСЦ для программы. То есть как работает генератор случайных чисел.