Кто-нибудь успешно реализовал алгоритм шифрования/дешифрования Cramer-Shoup с использованием библиотеки GNU GMP? Я подозреваю, что я нехорошо ошибаюсь в своей реализации и основываясь на том, что я пишу ниже, достаточно простого подтверждения моего подозрения - вот ссылка на wiki общей схемы: Cramer-Shoup CryptoSystemВнедрение схемы шифрования Cramer-Shoup с использованием библиотеки GMP GNU
Я пытаюсь реализовать Cramer- Схема шифрования Shoup (и проверка) при определении того, следует ли аннулировать анонимность. Это с алгоритмом создания пары ключей, начиная со страницы 468 the TCG Software Stack (TSS) Specification Version 1.2 Level 1 Errata A и с частью шифрования на стр. 446 и проверкой на стр. 471-472. Я могу сделать математику вручную, и простая алгебраическая подстановка приводит меня туда, где проходят проверки проверки (вручную). Я использую библиотеку GMP, и у меня никогда не было проблемы с другим кодом, который я реализовал с помощью функций GMP для моего приложения (обязательства для учетных данных на основе атрибутов). Но теперь даже пытаюсь несколько разных решений с математической библиотекой, я постоянно получаю неправильные ответы.
Я пробовал это на Beagleboard с чипом TPM и операционной системой Debian. В этот уик-энд я провел дома, чтобы версия для не-TPM запускалась на гостевой машине VMware Ubuntu в короткой программе. Я убедился, что распределение динамической памяти было распределено перед моими уравнениями и освобождено после уравнений, когда они больше не нужны.
Я также прошел каждый шаг расчета с помощью веб-калькулятора и оказался с таким же неправильным результатом. Вот почему я подозреваю, что мой код является проблемой, а не библиотекой GMP.
Я бы опубликовал свой код, но он сломает мой лимит персонажа на эту тему.
Спасибо - я знаю, что мой вопрос более философский в разработке программного обеспечения, чем в противном случае, но я не хочу путать сообщество с деталями.
Разбейте код на самую маленькую компилируемую деталь, которая обнаруживает проблему, а другие могут запускаться для воспроизведения и публикации, а также ввода, ожидаемого вывода и фактического вывода. То есть a [Минимальный полный проверяемый пример] (http://stackoverflow.com/help/mcve). – dbush
спасибо! Я сделаю так. –