Doob 2 749 Опубликовано: 27 июня, 2015 (изменено) Если надо зашифровать сообщение, но не хватает ресурсов, можно использовать XOR. Но нельзя использовать короткий циклический ключ, XOR хорош, когда можно получить рандомный ключ, равный длине сообщения. Если в math.random нету дыр, то можно использовать его. Функция подгоняет длину ключа к длине сообщения и прогоняет через XOR. local function encrypt(message, key) unicode = require('unicode') nKey = '' for i = 1, unicode.len(key) do nKey = nKey..key:byte(i) -- переводим ключ в number end math.randomseed(tonumber(nKey)) -- засеиваем генератор ключом tKey = {} sNewKey = '' for j = 1, unicode.len(message) do tKey[j] = '' while unicode.len(tKey[j]) ~= unicode.len(message.byte(j)) do tKey[j] = tKey[j]..math.random(0, 9) -- создаем рандомный код для ключа end sNewKey = sNewKey..unicode.char(bit32.bxor(message:byte(j), tKey[j])) -- записваем результат end return sNewKey end Пример использования: a = encrypt('сообщение', 'ключ') -- шифруем print(encrypt(a, 'ключ')) -- расшифровываем Изменено 27 мая, 2016 пользователем Doob 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
swg2you 403 Опубликовано: 27 июня, 2015 Я просто оставлю это здесь. Пусть лежит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 1 июля, 2015 Пытался прикрутить брутфорс, выяснил, что средствами OpenComputers ломать бессмысленно. Из-за того, что мощность процессора регулируется не замедлением реальных тактов, а жесткими фризами, то даже на самой мощной железяке выходит примерно так: алфавит 92 символа - 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ !?@#$%^&*()_+=-*/[]{}:;'".,<> время перебора: 1 символ = 0.42 секунд 2 символа = 39 секунд 3 = около получаса 4 = больше трех дней 5 = почти год Если брутить голым lua, то скорость возрастает где-то в 2000 раз. А если в ключе использовать рандомные символы юникода, то ломать вообще бессмысленно (при длине пароля не меньше 10 символов). 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
computercraft 0 Опубликовано: 10 февраля, 2016 Где взять модуль 'unicode'? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 10 февраля, 2016 Где взять модуль 'unicode'? Этот модуль входит в систему OpenOS (мод OpenComputers). http://minecraft-ru.gamepedia.com/OpenComputers/Unicode_API Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
computercraft 0 Опубликовано: 10 февраля, 2016 А вне системы его использовать можно? Есть ли он в виде отдельной библиотеки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 10 февраля, 2016 А вне системы его использовать можно? Есть ли он в виде отдельной библиотеки? Судя вот по этому: https://github.com/MightyPirates/OpenComputers/blob/master-MC1.7.10/src/main/scala/li/cil/oc/server/machine/luac/UnicodeAPI.scala библиотека врезана в мод. Поэтому достать не получится, но, потенциально можно использовать и за пределами OpenOS (но в пределах OC). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 11 февраля, 2016 Стандартная библиотека UTF-8 работает аналогично, можно просто заменить 'unicode' на 'utf8'. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
computercraft 0 Опубликовано: 11 февраля, 2016 (изменено) А где её взять-то, 'utf8'? Ссылку можете дать? Есть примеры асимметричного шифрования на Lua? Изменено 11 февраля, 2016 пользователем computercraft Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
vx13 2 271 Опубликовано: 11 февраля, 2016 А где её взять-то, 'utf8'? Ссылку можете дать? Есть примеры асимметричного шифрования на Lua? 'utf8' — стандартная библиотека для lua 5.3 и выше. http://www.lua.org/manual/5.3/manual.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 11 февраля, 2016 Есть примеры асимметричного шифрования на Lua?Вроде как дата-карта умеет 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
computercraft 0 Опубликовано: 11 февраля, 2016 Вроде как дата-карта умеет Что есть "дата-карта"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
cyber01 1 704 Опубликовано: 12 февраля, 2016 Что есть "дата-карта"? Это карта для компьютера из OpenComputers предоставляет несколько видов шифрования/кодирования 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Jet 30 Опубликовано: 7 мая, 2016 Зачем подбирать ключ, если можно подобрать пару псевдорандомных значений и восстановить ключ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 7 мая, 2016 Какое такое значение? Ключ служит затравкой для ГПСЧ, для каждого символа генератор выдает новое значение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Jet 30 Опубликовано: 7 мая, 2016 Какое такое значение? Ключ служит затравкой для ГПСЧ, для каждого символа генератор выдает новое значение. У тя есть math.randomseed(tonumber(nKey)) А затем math.random(0, 9) Не надо подбирать целиком ключ, достаточно сид подобрать, не? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 7 мая, 2016 Я не понимат. Ключ это и есть сид, сид задает генератор, при каждом обращении к генератору он выдает новое значение, которое ксорится с кодом символа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Jet 30 Опубликовано: 7 мая, 2016 (изменено) Я не понимат. Ключ это и есть сид, сид задает генератор, при каждом обращении к генератору он выдает новое значение, которое ксорится с кодом символа. math.randomseed(key) для одного и того же key выдаст одинаковую последовательность псевдослучайных чисел. Точнее дальнейшая функция math.random() Изменено 7 мая, 2016 пользователем Jet Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 9 мая, 2016 В этом весь смысл алгоритма. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Jet 30 Опубликовано: 11 мая, 2016 В этом весь смысл алгоритма. Но в этом его слабость. Будет времечко - напишу ломалку под него. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах