View on GitHub

School-IT

Учебники, статьи, ссылки, видео, упражнения и др. по С#

Главная » Алгоритмы

Комбинаторика. Полный перебор по алфавиту

Сразу хочу сказать, что алгоритм приведён в информационных целях и его нельзя использовать для взлома паролей.

Алгоритм построен на том, что есть определённый алфавит. К примеру: [‘A’, ‘B’, ‘C’, ‘D’]. С кодами: A = 0, B = 1, C = 2, D = 3.

Алфавит

Рис. 1. Алфавит.

В алфавите буквы пронумерованы. К примеру, от нуля. Пусть у нас есть массив алфавита с элементами x=>y (индекс x соответствует символу y). Массив алфавита: [0=>”A”, 1=>”B”, 2 => “C”, 3 => “D”]. Рассмотрим на примере этого алфавита пример полного перебора по алфавиту.

Процесс перебора

Анимация. 1. Пример алгоритма полного перебора по алфавиту, без расширения границ при переполнении.

Примеры значений шагов алгоритма:

Таблица 1. Пример шагов алгоритма.

Шаг Значения индексов Буква по индесу
1 0000 AAAA
2 0001 AAAB
3 0002 AAAC
4 0003 AAAD
5 0010 AABA
6 0011 AABB
….
X 2330 CDDA
X+1 2331 CDDB
N-1 3332 DDDC
N 3333 DDDD

Шаги алгоритма получения следующего элемента:

Преимущества и Недостатки

Не используйте данный алгоритм для взлома паролей.

Преимущества:

Недостатки:

Исходный код

Пример полного перебора по алфавиту на языке C# расположен тут.