WolframAlpha. Системы счисления.

WolframAlpha. Системы счисления.
WolframAlpha. Системы счисления.

Данный урок посвящен системам счисления, а также использованию пакета WolframAlpha для преобразования чисел в различные системы счисления.

На страницу урока →

Wolfram|Alpha — база знаний и набор вычислительных алгоритмов , вопросно-ответная система. Запущена 15 мая 2009 года. Не является поисковой системой.

Основатель проекта, Стивен Вольфрам.

Wolfram|Alpha не возвращает перечень ссылок, основанный на результатах запроса, а вычисляет ответ, основываясь на собственной базе знаний, которая содержит данные о математике, физике, астрономии, химии, биологии, медицине, истории, географии, политике, музыке, кинематографии, а также информацию об известных людях и интернет-сайтах. Он способен переводить данные между различными единицами измерения, системами счисления, подбирать общую формулу последовательности, находить возможные замкнутые формы для приближенных дробных чисел, вычислять суммы, пределы, интегралы, решать уравнения и системы уравнений, производить операции с матрицами, определять свойства чисел и геометрических фигур. Однако, расчет на основании собственной базы имеет и свои недостатки, в том числе — уязвимость к ошибкам данных.

Внешний вид:

ва

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

На одном из уроков мы с Вами рассматривали основы криптографии и простейшие шифры. На самом деле, для шифровки информации можно использовать и перевод чисел в различные системы счисления. Переводить можно и буквы, предварительно присвоив им числовые идентификаторы. Напоминание: в русском алфавите — 33 буквы, в английском — 26. Соответственно, если рассматривать английский алфавит (более распространен), то a — 1, … , z — 26. Получается таблица:

числа

Давайте закодируем сообщение: «Hello world. It is amazing.»

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

Итак: 85303060 5006090304. 9200 9100 14018009507.

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

Небольшое напоминание:

Для перевода из десятичной системы счисления в систему с основанием k необходимо производить деление исходного числа на k, запоминая остатки от деления и продолжая данную операцию с целочисленным значением деления до тех пор, пока результатом деления не будет ноль. Искомым представлением числа будет запись, составленная из полученных остатков от деления, записанных в обратном порядке. Ниже представлены примеры перевода в двоичную и шестнадцатеричную систему счисления:

image

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

Перевод из произвольной системы счисления в десятичную

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

ва перевод

Давайте переведем нашу закодированную строку в шестнадцатеричную систему счисления с помощью WolframAlpha:

ааавапф

hello = 5159f14

world = 12a62e040

it = 23f0

is = 238c

amazing = 34389d9a3

Из прошлого урока вы узнали о симметричных ключах. Здесь его также можно использовать. Например можно умножить каждое из пяти получившихся чисел на любое десятичное число и результат перевести в десятичный. Чтобы наш шифр не был взломан только методом подбора, необходимо выбрать большое число — не менее 10 знаков. Это существенно усложнит процесс взлома путем увеличения времени на подбор множителя.

ааавапф

hello = 817607328005802600

world = 47982055007278710000

it = 88179573132000

is = 87221099511000

amazing = 134358923313867100000

Получившийся шифр можно расшифровать только с помощью симметричного ключа: 9584736210.

Итоги

Конечно, представленный шифр является неудобным из-за своей громоздкости, однако, его довольно сложно взломать.

Также мы с вами познакомились с системой WolframAlpha, в частности с разделом преобразований в различные системы счисления.

Самостоятельная работа: 

На основе вышеизложенного попробуйте придумать свой алгоритм шифрования на основе систем счисления. Докажите его криптостойкость. Использование системы WlframAlpha приветствуется.