Введение в Connway's Game of Life
Флаттер-приложение для имитации роста и управления клеточной сеткой на основе концепции «Игры жизни Коннуэя» для демонстрации «клеточных автоматов».
Клеточные автоматы:
Клеточные автоматы (CA) — это математическая модель для моделирования сложных систем, обычно представленных в виде сетки ячеек, которые могут находиться в одном из конечного числа состояний. Ячейки изменяют состояние на основе набора правил, которые определяют, как на их состояние влияет состояние окружающих ячеек. Это создает шаблоны и структуры, которые со временем развиваются, часто приводя к сложному и, казалось бы, разумному поведению. CA используется в различных областях, включая физику, биологию и информатику, для изучения явлений, начиная от формирования паттернов и заканчивая самоорганизацией и эмерджентным поведением.
Игра жизни Коннуэя:
Игра жизни Конвея — это клеточный автомат, впервые предложенный математиком Джоном Хортоном Конвеем в 1970 году. Это симуляция простых правил, которые могут генерировать сложные и интересные закономерности.
Моделирование происходит на двумерной сетке ячеек, где каждая ячейка либо «живая», либо «мертвая». На каждом шаге состояние каждой ячейки обновляется на основе состояния восьми соседних ячеек в соответствии со следующими правилами:
Если клетка жива и имеет двух-трех живых соседей, она остается живой. Если клетка мертва и имеет ровно трех живых соседей, она оживает. Во всех остальных случаях клетка погибает или остается мертвой. Эти простые правила могут генерировать модели, начиная от простых осцилляторов и заканчивая сложными формами, которые развиваются со временем. Игра «Жизнь» часто используется в качестве примера клеточных автоматов и широко изучается математиками, программистами и другими исследователями, интересующимися сложными системами и эмерджентным поведением.
Экспериментальная функция — Генерация симметричного ключа шифрования/IV:
Учитывая природу клеточного автомата и то, как он проходит через множество конечных состояний, его можно использовать для генерации псевдослучайных чисел/строк, которые могут служить в качестве секретных ключей шифрования. Генерация симметричного ключа относится к процессу создания секретного ключа, который можно использовать для безопасного шифрования и дешифрования данных. В этом подходе CA инициализируется со случайным начальным состоянием, а затем итеративно применяются правила для генерации последовательности состояний. Затем последовательность состояний преобразуется в последовательность чисел, которую можно использовать в качестве секретного ключа. Преимущество использования CA для генерации симметричного ключа заключается в том, что результирующая последовательность чисел очень случайна и непредсказуема, что затрудняет угадывание ключа злоумышленником. Кроме того, ЦС можно легко настроить для создания ключей различной длины, что делает его подходящим для широкого спектра криптографических приложений.
Характеристики:
Вот конкретные детали реализации этой экспериментальной функции:
Эти ключи шифрования генерируются с использованием текущего состояния Cellular Automaton:
Во время генерации ключа текущее состояние/поколение клеточного автомата преобразуется в двоичную строку --> 1 для живых/0 для мертвых.
Затем эта двоичная строка делится на подстроки по 12, и каждая подстрока преобразуется в эквивалентное десятичное число.
Затем каждое из этих чисел кодируется в символ. Таким образом генерируется строка жаргонных символов. Затем эта строка разделяется на две половины, которые используются для генерации секретного ключа и вектора инициализации.
Затем каждая из этих двух половин подвергается кодированию UTF-8 и хешированию SHA-256.
Затем первые 16 байтов двух половин преобразуются в ключ и IV соответственно.
Для проверки сгенерированного таким образом симметричного ключа используется алгоритм AES (Advanced Encryption Standard). Я использовал пакет encrypter для реализации алгоритма AES, поскольку моей целью было только продемонстрировать генерацию ключей, а не повторно реализовать какой-либо алгоритм шифрования.
Клеточные автоматы:
Клеточные автоматы (CA) — это математическая модель для моделирования сложных систем, обычно представленных в виде сетки ячеек, которые могут находиться в одном из конечного числа состояний. Ячейки изменяют состояние на основе набора правил, которые определяют, как на их состояние влияет состояние окружающих ячеек. Это создает шаблоны и структуры, которые со временем развиваются, часто приводя к сложному и, казалось бы, разумному поведению. CA используется в различных областях, включая физику, биологию и информатику, для изучения явлений, начиная от формирования паттернов и заканчивая самоорганизацией и эмерджентным поведением.
Игра жизни Коннуэя:
Игра жизни Конвея — это клеточный автомат, впервые предложенный математиком Джоном Хортоном Конвеем в 1970 году. Это симуляция простых правил, которые могут генерировать сложные и интересные закономерности.
Моделирование происходит на двумерной сетке ячеек, где каждая ячейка либо «живая», либо «мертвая». На каждом шаге состояние каждой ячейки обновляется на основе состояния восьми соседних ячеек в соответствии со следующими правилами:
Если клетка жива и имеет двух-трех живых соседей, она остается живой. Если клетка мертва и имеет ровно трех живых соседей, она оживает. Во всех остальных случаях клетка погибает или остается мертвой. Эти простые правила могут генерировать модели, начиная от простых осцилляторов и заканчивая сложными формами, которые развиваются со временем. Игра «Жизнь» часто используется в качестве примера клеточных автоматов и широко изучается математиками, программистами и другими исследователями, интересующимися сложными системами и эмерджентным поведением.
Экспериментальная функция — Генерация симметричного ключа шифрования/IV:
Учитывая природу клеточного автомата и то, как он проходит через множество конечных состояний, его можно использовать для генерации псевдослучайных чисел/строк, которые могут служить в качестве секретных ключей шифрования. Генерация симметричного ключа относится к процессу создания секретного ключа, который можно использовать для безопасного шифрования и дешифрования данных. В этом подходе CA инициализируется со случайным начальным состоянием, а затем итеративно применяются правила для генерации последовательности состояний. Затем последовательность состояний преобразуется в последовательность чисел, которую можно использовать в качестве секретного ключа. Преимущество использования CA для генерации симметричного ключа заключается в том, что результирующая последовательность чисел очень случайна и непредсказуема, что затрудняет угадывание ключа злоумышленником. Кроме того, ЦС можно легко настроить для создания ключей различной длины, что делает его подходящим для широкого спектра криптографических приложений.
Характеристики:
Вот конкретные детали реализации этой экспериментальной функции:
Эти ключи шифрования генерируются с использованием текущего состояния Cellular Automaton:
Во время генерации ключа текущее состояние/поколение клеточного автомата преобразуется в двоичную строку --> 1 для живых/0 для мертвых.
Затем эта двоичная строка делится на подстроки по 12, и каждая подстрока преобразуется в эквивалентное десятичное число.
Затем каждое из этих чисел кодируется в символ. Таким образом генерируется строка жаргонных символов. Затем эта строка разделяется на две половины, которые используются для генерации секретного ключа и вектора инициализации.
Затем каждая из этих двух половин подвергается кодированию UTF-8 и хешированию SHA-256.
Затем первые 16 байтов двух половин преобразуются в ключ и IV соответственно.
Для проверки сгенерированного таким образом симметричного ключа используется алгоритм AES (Advanced Encryption Standard). Я использовал пакет encrypter для реализации алгоритма AES, поскольку моей целью было только продемонстрировать генерацию ключей, а не повторно реализовать какой-либо алгоритм шифрования.
Читать ещё