Сложение и умножение в поле Галуа

Я пытаюсь сгенерировать QR-коды на чрезвычайно ограниченной встроенной платформе. Все в спецификации кажется довольно простым, за исключением генерации кодовых слов исправления ошибок. Я просмотрел множество существующих реализаций, и все они пытаются реализовать кучу полиномиальной математики, которая идет мне прямо через голову, особенно в отношении полей Галуа. Самый простой способ, который я вижу, как с точки зрения математической сложности, так и с точки зрения требований к памяти, - это концепция схемы, которая изложена в самой спецификации:

circuit diagram

С их описанием я довольно уверен, что смогу реализовать это, за исключением частей помечены как сложение GF (256) и умножение GF (256).

Они предлагают эту помощь:

Полиномиальная арифметика для QR-кода должна быть вычислена с использованием побитовой арифметики по модулю 2 и побайтовой арифметика по модулю 100011101. Это поле Галуа 2 ^ 8 с 100011101, представляющим простой модуль поля многочлен x ^ 8 + x ^ 4 + x ^ 3 + x ^ 2 + 1.

что для меня в значительной степени греческое.

Итак, у меня такой вопрос: как проще всего выполнять сложение и умножение в такой арифметике поля Галуа? Предположим, что оба числа ввода имеют ширину 8 бит, и мой вывод также должен быть шириной 8 бит.В некоторых реализациях выполняется предварительный расчет или жесткое кодирование в двух таблицах поиска, чтобы помочь с этим, но я не уверен, как они рассчитываются или как я бы использовал их в этой ситуации. Я бы предпочел не использовать 512-байтовую память для двух таблиц, но это действительно зависит от альтернативы. Мне просто нужна помощь в понимании того, как выполнить в этой схеме одну операцию умножения и сложения.

12
задан captncraig 9 December 2011 в 03:21
поделиться