Доделал простенький ИИ для своей игры Make World
Привет, пикабу! Доделал первую версию бота для своей онлайн стратегии типа "Катан". На гифке ИИ бот сам играет и побеждает в игре. Ну а вы можете попробовать победить его бесплатно на мобильных устройствах с андроид, компьютерах с windows или в браузере. Ссылки для каждой платформы найти можно тут: https://plugfox.dev/make-world-ru/
Качество шакальное чтоб ужать размер)
Поиграем в бизнесменов?
Одна вакансия, два кандидата. Сможете выбрать лучшего? И так пять раз.
Не все поймут не многие выберут ARCH
Релиз
Лучшее время для релиза - это вечер пятницы. Никто не хочет работать в выходные, поэтому сделают все как надо и проверят все что нужно.
Как шифровать свои данные и почему это важно делать?
Современные навыки хакеров превосходят все и вся. Вирусы в картинках, взломы баз данных пользователей, прозвоны, фишинг, ботнеты, программы - вымогатели и многое другое.
Наша цель заключается в том, чтобы достичь безопасного хранения данных на вашем компьютере или телефоне. Наверняка вы слышали, что пароли не стоит хранить в телефоне или в компьютере, так как в том случае, если злоумышленники получат доступ к вашим устройствам, то они спокойно смогут войти в ваше соц. сети, а если у вас еще и ко всем аккаунтам на разных платформах одинаковые пароли, то тут даже без комментариев о том, что может быть..
Перейдем к сути.
Существует много способ для безопасного хранения и передачи информации.
Их можно разделить на две категории:
1) криптография
2) стеганография
Каждая из этих категорий имеет подкатегории:
1.1 симметричное шифрование
1.2 асимметричное шифрование
1.3 хеширование (одностороннее шифрование без возможности дешифрования. Эта подкатегория нам не подходит)
1.4 гибридное шифрование
2.1 классическая стеганография
2.2 компьютерная стеганография
2.3 цифровоя стеганография
Данные подкатегории делятся еще на подкатегории, но это уже тема для отдельной статьи.
Сегодня мы будем разбирать раздел криптографии и асимметричное шифрование.
Раскрытие категории:
Криптография - наука изучающая методы шифрования информации и их использование.
Асимметричное шифрование (RSA - Rivest, Shamir, Adleman) - шифрование данных с помощью двух ключей, один из которых - открытый, а другой - закрытый.
Весь процесс шифрования и дешифрования происходит на основе математических формул и чисел. Пугаться не нужно, ничего сложно в этом нет.
Алгоритм:
1) Генерация двух простых чисел p и q.
2) Вычисление значения n, где n = pq.
3) Вычисление функции Эйлера. F = (p-1)(q-1).
4) Генерация экспоненты e, являющийся взаимно простым с F. (Наибольший общий делитель двух чисел равен 1)
5) Вычисление значения d, такое что (d*e) % F = 1. (% - остаток от деления)
Совокупность e и n является открытым ключом, а совокупность d и n – закрытым ключом.
Для шифрования информации необходимо преобразовать символы в числа удобным вам способом. Можно воспользоваться таблицей символов ASCII (смотреть скришот ниже) и использовать числовые значения для букв в столбике "DEC". Более простым способом является создание своих числовых значений для букв(A-1, B-2, C-3 и т. д.)
После преобразование всех символов в числовые значения начинаем их шифровать с помощью алгоритма написанного выше.
*Для удобства, числовое значение каждой буквы можно раделять точкой. *
Для шифрования сообщения:C = m**e%n
Для дешифрования сообщения:m = C**d%n
m - числовое значение символа
Пример:
Возьмём слово "шифр".
Алфавит: ш-12; и-18; ф-23; р-54
p = 3
q = 5
n = 3 * 5 = 15
F = (3-1) * (5-1) = 8
e = 7 (*gcd(7, 8) = 1)
d = 7 ((7*7) % 8 = 1)
*gcd - функция проверки того, что два числа являются взаимно простыми
Процесс шифрования:
Шифруем каждое числовое значение символа:
12 -> 12^7%15 = 3
18 -> 18^7%15 = 12
23 -> 23^7%15 = 2
54 -> 54^7%15 = 9
Зашифрованное сообщение: 3.12.2.9
Процесс дешифрования:
Дешифруем зашифрованные числовые значения букв:
3 -> 3^7%15 = 12
12 -> 12^7%15 = 18
2 -> 2^7%15 = 23
9 -> 9^7%15 = 9
Сопоставляем буквы в соответствии с кодами из алфавита (ш-12; и-18; ф-23; р-54) и получаем слово "шифр"
Важно соблюдать порядок зашифрованных кодов букв, иначе при дешифровке сообщение будет просто набор символов.
@tehnoin
Уже занимаюсь разработкой по внедрению данного алгоритма в телеграмм бота, который будет в абсолютно открытом доступе.
Сможете найти на картинке цифру среди букв?
Справились? Тогда попробуйте пройти нашу новую игру на внимательность. Приз — награда в профиль на Пикабу: https://pikabu.ru/link/-oD8sjtmAi
Продолжение «"Программисты не умеют программировать"»
Просто компилирую почти пустые приложения в Delphi 7 (x86), 11.3, а также Lazarus 2.2.4 (x64). Уровень "Hello, World". Я не менял Uses, оно само туда надобавлялось. Не использовал KOL и прочие навороты.
У Lazarus просто отключал генерацию отладочной информации, у Delphi 11.3 переключал профили Debug/Release (Win32), Delphi 7 (x86) - компилил как есть, на свежеустановленной среде.
Оконное приложение:
vcl, TCaption для вывода "Hello, World". Код примерно такой (Delphi 11.3):
Delphi 11.3
У Lazarus другой список uses:
uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
У Delphi 7 этот список такой:
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
Консольное приложение:
Lazarus
Delphi 11.3
Delphi 7 - как у Lazarus + uses SysUtils.
Навороченное консольное приложение Lazarus 2.2.4. Это стандартная заготовка, я добавил только строчку № 47.
По итогу накомпилировал столько приложений:
В виде таблички:
Для Delphi 7 (x86) -- вроде и Debug-версия, но там Debug-файлы генерируются отдельно, т.е. вроде и не Debug.
Решил отдельно замерять по трем компиляторам, даже Delphi 7 откопал, развитие моего комментария: #comment_306393162
Отдельно запустил C# (.NET Framework) с использованием Windows Form и получился такой код:
Все эти Form1 и label1.Text мне что-то смутно напоминают.
Андерс Хейлсберг приложил свою руку и к Delphi, и к C#. При этом C# вдохновлялась Java, а Java вдохновлялась виртуальными машинами:
в 1973 году с участием Вирта был разработан прототип виртуальной машины, исполняющей на любой платформе промежуточный «пи-код», в который предполагалось компилировать все программы
А Никлаус Вирт создал Паскаль, который лег в основу Delphi.