logo
Коды и шифры

Метод срединных квадратов

Хотя данный метод нельзя рекомендовать для использования в криптографии, он применялся при решении ряда других задач. Если случайным образом выбрать число и возвести его в квадрат, то последняя цифра не может быть равна 2, 3, 7 и 8. Поэтому может показаться, что, бессмысленно пытаться получить последовательность случайных чисел, задавая начальное число и последовательно возводя его в квадрат. Однако, если после возведения в квадрат "отбросить" несколько старших и младших цифр результата, то оставшиеся цифры могут оказаться распределены достаточно равновероятно, и ими можно пользоваться в качестве источника псевдослучайных чисел. Этот факт лежит в основе метода срединных квадратов, который работает следующим образом:

  1. выберем большое "случайное" целое число X, запись которого состоит из n десятичных цифр;

  2. вычислим X2, из его десятичной записи вырежем средние n цифр (приписав слева нули, если это необходимо); полученное число используется в качестве нового значения X.

Последовательность полученных таким образом n-значных целых чисел в конечном счете должна начать повторяться, поскольку возможных значений только 10n. Цикл может возникнуть, если повторится ранее встречавшееся число (не обязательно начальное значение), или если получено число, состоящее из одних нулей, после которого в последовательности могут быть только нули. Как показывает следующий пример, данным методом в любом случае следует пользоваться с осторожностью.

Пример 8.3

  1. Используя метод срединных квадратов, получить последовательность четырехзначных чисел, начиная с 3317.

  2. Повторить эксперимент для начального значения 2907.

  3. Повторить эксперимент для начального значения 3127.

(Для второго и третьего случаев понадобится калькулятор или компьютер.)

Решения

  1. X=3317, поэтому X2=11002489. Отбрасывая первую и последнюю пары цифр, получим новое значение X=0024, поэтому X2=00000576. Отбрасывая первую и последнюю пары цифр, получим новое значение X=0005. Поскольку X2=00000025, то следующее, а также все последующие значения X равны 0000.

  2. Этот случай не такой вырожденный. Последовательность значений X начинается с чисел 2907, 4506, 3040 и кажется вполне удовлетворительной, но тем не менее, 42-е значение оказывается равным нулю.

  3. В этом случае образуется цикл, но последовательность повторяется не с начала. Начав с X=3127, находим следующие элементы последовательности: 7781, 5439, 5827,... , но начиная с 38-го элемента и далее мы получаем 6100, 2100, 4100, 8100, 6100, 4100,... , и эти четыре числа теперь повторяются бесконечно.

Хотя метод срединных квадратов достаточно прост в использовании, его следует применять (если вообще стоит это делать) только для гораздо больших чисел, чем в данном примере.