Рубрика «XOR» - 2

Здравствуй. И сразу к делу.
Задача:
Есть два целых числа: L и R. Нужно найти максимальное значение A xor B на промежутке [L; R], где L ≤ A ≤ B ≤ R.
Казалось бы ничего сложного. Сразу напрашивается решение простым перебором.

Развернуть

public int BruteForce(int one, int two)
{
   int maxXor = 0;
   while (one < two)
   {
      int oneTemp = one + 1;
      while (oneTemp <= two)
      {
         int curXor = one ^ oneTemp;
         if (maxXor < curXor) maxXor = curXor;
         oneTemp++;
      }
      one++;
   }

   return maxXor;
}

Сложность этого решения O(n) = n2.
А что, если в интервале будет 1000000 чисел. Возьмем L = 1, а R = 1000001. Сколько времени понадобится cреднестатистическому компьютеру для того, чтобы посчитать максимальное значение xor на этом интервале? Моему ноутбуку потребовалось 1699914 миллисекунд.
Существует решение, которое работает значительно быстрее, именно о нем и пойдет речь в этой статье.
imageЧитать полностью »

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

Инженер-физик Эшер Лэнгтон (Asher Langton) из Ливерморской национальной лаборатории был очень опечален, когда купил цифровое видео в онлайне — и не смог воспроизвести его на своём смартфоне. Оказалось, что видео в файлах .mov закодировано и проигрывается только в фирменном медиаплеере MOD Player производства Leaping Brain. Это обычное дело: такие DRM-схемы часто встречаются в интернете.

Как работает DRM от компании Leaping Brain

К чести учёного, он решил разобраться и взглянул на этот видеоплеер. Оказалось, что это обычный Open Source плеер VLC с прикрученным скриптом Python на некоторых библиотеках. При попытке воспроизвести видео в онлайне программа скачивает файлы на диск в зашифрованном виде — и декодирует их в момент воспроизведения.
Читать полностью »

Когда сотрудник Ливерморской национальной лаборатории Эшер Лэнгтон купил в одном онлайн-магазине фильм, для которого требовался проприетарный видеопрогрыватель от компании Leaping Brain, у него возникли трудности с установкой плеера на iPhone. Пытаясь разобраться с проблемой, он обнаружил, что видео загрузилось в скрытую папку в виде набора обычных файлов формата .mov. Правда, ни один из них воспроизвести не удалось.

Проприетарный плеер с DRM-защитой оказался скриптом-обёрткой на Python вокруг нескольких библиотек из проекта VLC. Код на Python совершал какие-то преобразования над файлом, прежде чем скормить его VLC. В FAQ на сайте Leaping Brain было сказано, что их плеер использует невероятно крутой криптографический алгоритм для реализации DRM:
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js