пятница, 8 февраля 2013 г.

простая схема отображения цифр

Мною были разработаны две версии генератора для обычного 7-сегментного индикатора и для «продвинутого» 16-сегментного. Последний вы могли видеть на современной бытовой технике, которая умеет общаться с пользователем на «человеческом языке». Этот вид индикаторов позволяет отобразить любую из букв латинского или кириллического алфавита. К сожалению, 16-сегментного индикатора у меня под рукой не оказалось, поэтому «в металле» я воплотил только 7-сегментный вариант, но схемы и прошивки выкладываю для обоих версий. В случае 7-сегментного индикатора генератор умеет отображать цифры и некоторые буквы.

Генератор собран на 8-битном микроконтроллере фирмы Atmel семейства AVR. Благодаря применению микроконтроллера схема получилась очень простой, помимо МК также нужен собственно индикатор и несколько токоограничительных резисторов по одному на каждый используемый разряд индикатора.

В рассматриваемом генераторе паролей используются оба механизма генерации случайных чисел: алгоритмический, на основе примитивного полинома, и физический. В качестве аппаратного датчика случайных чисел используется одна из сигнальных линий шины USB. Во время обмена данными между мышкой и компьютером на этой линии «случайным» образом сигнал переключается между значениями 0 и 1, что используется для подмешивания «физического шума» к результатам алгоритмического ГСЧ.

Устройство генератора

Чтобы получить по-настоящему случайную последовательность, помимо алгоритмического генератора нужно использовать физический. В компьютере постоянно происходит множество событий, которые можно считать случайными по отношению к работающей программе. Это обмен данными с памятью и накопителями, ввод данных с клавиатуры и мыши, получение пакетов из сети. В UNIX-подобных ОС есть встроенный датчик случайных чисел /dev/random, который выдает случайные данные, накопленные на основе такого «физического шума». Эти данные можно использовать для генерации начального элемента последовательности случайных чисел или постоянно подмешивать их в результат работы ГСЧ, чтобы получить истинно случайную последовательность.

Понятно, что любой алгоритм при одинаковых входных данных дает одинаковый результат. Поэтому на основе чисто алгоритмических действий можно построить только генератор псевдослучайных чисел когда последовательность чисел на выходе в конце концов повторится строго в том же порядке. При этом сама последовательность может быть очень длинной, но основная проблема в том, что при инициализации генератора одним и тем же входным значением мы получим всегда одинаковую последовательность чисел на выходе.

Существуют полиномы, называемые примитивными, которые дают неповторяющуюся последовательность значений функции максимально возможной длины. Более глубокую теорию по этому вопросу можно почитать, например, .

На следующем шаге вычисленное значение используют в качестве аргумента функции и все повторяется. В качестве выхода генератора используется младший бит значения вычисленного значения.

2. f(x) = (x / 2) xor Полином

1. Если младший_бит(x) = 1, то

Для вычисления значения функции может использоваться схема Галуа, как наиболее простая при алгоритмической реализации. Полином задается своими коэффициентами в виде двоичного числа, значение функции f(x) вычисляется по алгоритму.

задаваемый коэффициентами gi ={0,1} (i = 0,...k).

Функция генерации псевдослучайного числа представляет собой полином вида

Для генерации случайных чисел алгоритмическим способом нужна функция, которая будет при каждом вызове выдавать очередное значение. При этом очень желательно, чтобы эти значения «выглядели» случайными (в разброс), а период повторения последовательности был максимальным (в идеале 2^N-1, где N разрядность результата).

Вначале немного теории

Итак, знакомьтесь: RANDOMOUSE генератор случайных символов, встроенный в обычную компьютерную мышку.

Про то, как придумывать хорошие, стойкие к подбору пароли, написано немало статей, в том числе и на Хабре. Сегодня я хочу рассказать про устройство, которое также предназначено для решения этой задачи. На его разработку у меня ушло всего пара дней, а изготовить по готовой документации его можно за несколько часов. Это устройство будет интересно смотреться на вашем столе, а также послужит оригинальным подарком компьютерному гику, сисадмину или специалисту по информационной безопасности.

Генератор паролей, который всегда под рукой

26 декабря 2010 в 10:58

Генератор паролей, который всегда под рукой / Хабрахабр

Комментариев нет:

Отправить комментарий