Перейти к содержимому

Лидеры


Популярный контент

Показан контент с высокой репутацией 24.08.2019 во всех областях

  1. 1 балл
    OpenPeripheral предоставляет мощный функционал по созданию собственных интерфейсов в виде очков дополненной реальности "Terminal Glasses". К сожалению, полного списка функционала и всех нюансов по работе с этими очками не найти. Присутствуют некоторые отрывки, небольшие видео с результатами работы и прочие поделки. Но! Спустя пару бессонных ночей, декомпилированного кода и трёх литров чая, удалось описать полный функционал этих очков. Основные возможности очков и периферии: Отображение геометрических объектов различной сложности и цветовой гаммы. Отображение текста. Отображение жидкостей и предметов. Взаимодействие с мышью/клавиатурой. Чтение сообщений чата. Специальные команды чата, не отображающиеся в нем. Возможность индивидуальной работы с каждым пользователем терминала. Установка очков в любой шлем. Возможности данных очков я опишу по разделам, в лучших традициях вики Для начала, определю некоторые понятия. Система терминальных очков состоит из трёх предметов: терминала, очков, беспроводной клавиатуры. Терминал является центром всей системы, через него происходит общение между компьютером и очками. Также он хранит все данные интерфейса и пользователей. На очки выводится вся графическая информация, а сами очки передают сообщения или команды чата на терминал. Беспроводная клавиатура позволяет дополнить всю систему, своей возможностью контроля элементов при помощи клавиатуры и мыши. Как выводить информацию на очки: local com = require("component") local opb = com.openperipheral_bridge -- Построение интерфейса происходит во внутреннем буффере терминала (он же мост). local text = opb.addText(10, 10, "", 0xffef7f) -- Создаем компонент "Текст". -- Его нужно создать только один раз, в остальное время можно обращаться по ссылке и изменять любой параметр. local counter = 0 while true do -- В качестве примера будет выводится счетчик секунд. text.setText(tostring(counter)) -- Обновляем текста компонента. opb.sync() -- Для отображения графики на экране, необходимо отправить буффер на очки. os.sleep(1) -- Ждем секунду и прибавляем счетчик. counter = counter+1 end API Перед тем как перейти к API, нужно знать: Color:number -- Число в формате TrueColor RGB (по умолчанию 0xffffff). Opacity:number -- Прозрачность, число от 0.0 до 1.0 (по умолчанию 1). Знак '?' -- Опциональный параметр/функция. События Строковые константы VerticalAlignment:[TOP, MIDDLE, BOTTOM] HorizontalAlignment:[LEFT, MIDDLE, RIGHT] GuiElement:[OVERLAY, PORTAL, HOTBAR, CROSSHAIRS, BOSS_HEALTH, HEALTH, ARMOR, FOOD, MOUNT_HEALTH, AIR, EXPERIENCE, JUMP_BAR, OBJECTIVES] Структуры данных SimpleBox, ColoredPoint, Coord, User Абстрактные объекты Drawable, BoundedShape, Box Графические объекты Управление графическими объектами DrawableFactory, DrawableContainer Управление терминалом Вот такая шпаргалка по очкам, надеюсь пригодится
  2. 1 балл
    В сотрудничестве с @Zer0Galaxy мы доработали целочисленную библиотеку metaint. Итак, встречайте: RSA Криптосистема с открытым ключом Теперь на "отечественной" библиотеке metaint Для поиска простых чисел используется Тест Миллера — Рабина Поддерживаются ключи с кастомным количеством бит А так же полная оптимизация генерации ключей. Осталось лишь оптимизировать поиск простых чисел и ключи в 2048 бит в ваших руках. Установка pastebin run 1xudmTa7 - выберите RSA и установите. С hpm проблемы( Использование Библиотека возвращает класс. Для получения инстанса - просто require("RSA")(<params>): RSA_instance Аргументом (он один) конструктора класса может быть: строка - путь к файлу собственной структуры. В нем обязательно должен быть публичный ключ. число (битовая длина ключа, не менее 16 - иначе будет недоступно шифрование текста. Да и не выйдет меньше 16) таблица. В ней нужно 3 поля - private_key, public_key и metadata, структура как у файла ключа библиотеки. Так же должен быть публичный ключ. Приватный ключ и метадата необязательны - они хранятся у создателя ключа. Методы инстанса RSA RSA:save(filepath: string) - сохранить ключ в файл RSA:encrypt(number:number) - зашифровать число RSA:decrypt(cryptedNum: number) - расшифровать число. Кинет ошибку, если нет приватного ключа. RSA:sign(number: number) - подписать число. Кинет ошибку, если нет приватного ключа. RSA:verify(number:number, signedNumber: number): boolean - проверить подпись. Вернет true, если подпись верна. Работа с текстом. Очень медленно, битовая длина ключа - минимум 32 бит. RSA:textEncrypt(text: string[,saltLen=4: number]):table[metaint] - шифрует текст поблочно, перемешивая блоки - защита от DPI. Блок равен 32 бит. RSA:textDecrypt(cryptedText: table[, saltLen=4: number]): string - расшифровывает текст с учетом соли. Применяет обратное преобразование текста для расшифровки - защита от DPI, все дела. RSA:textSign(text:string): table[metaint] - поблочно подписывает текст, перемешивая блоки. RSA:textVerify(text:string, signedBlocks: table[metaint]): boolean, string - проверяет подпись текста. Второе значение - полученная строка. Более полная документация с описанием алгоритмов. Готовится оптимизация библиотеки, прогресс можно посмотреть в ветке beta репозитория. Спойлер: стоит на месте, ищу способ выполнения длинных битовых операций
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...