Математическая библиотека для JavaCard?

java math javacard

415 просмотра

3 ответа

22 Репутация автора

В настоящее время я работаю над проектом JavaCard (v.2.2.2), и мне нужно вычислить значения, используя квадратные корни, логарифмы и т. Д.

Я знаю, что Mathкласс недоступен в API JavaCard и интересно, существует ли другая библиотека, которая обеспечивает такие операции?

А также я не могу использовать doubleзначения, но мне нужно. Есть ли способ представить doubleзначение в API JavaCard и выполнить операцию (например, журнал, sqrt и т. Д.)?

Любая помощь ценится!

Автор: neogenesis Источник Размещён: 12.03.2013 01:58

Ответы (3)


1 плюс

2097 Репутация автора

Javacard 2.2.2 поддерживает только логические, байтовые, короткие и, необязательно, int. Если вам действительно нужно выполнить математику, тогда вам нужно создать свой собственный класс с помощью сложных способов, и, конечно, результат не является точным.

Лучшей практикой является то, что карта хранит данные только и делает простой расчет / шифрование, а сервер / терминал рассчитывает сложные вещи. Обходной путь для хранения двойной карты - использовать байтовый массив.

Автор: David Размещён: 23.05.2013 11:19

-2 плюса

22 Репутация автора

Решение

Наконец, я использовал таблицы поиска и другие трюки, и это сработало просто отлично!

Автор: neogenesis Размещён: 23.05.2013 08:42

0 плюса

41 Репутация автора

В JavaCard API есть пакет javacardx.framework.math с 2.2.2 с ограниченной функциональностью (добавление, вычитание, умножение). Тем не менее, часто не поддерживается физическими картами, и даже если поддерживается, это может быть всего 8 байтов .

JCAlgTest теперь также предоставляет результаты для всех пакетов JavaCard, включая все версии, поддерживаемые картами в базе данных (включая javacardx.framework.math).

Кроме того, вы можете попробовать попробовать библиотеку JCMathLib . Эта библиотека использует только публичные вызовы API JC для предоставления BigInteger произвольной длины (а также операций ECPoint) и является улучшенной версией старой библиотеки BigNat . Он будет потреблять около 1 КБ ОЗУ и требует поддержки карты ECC (если вы хотите использовать ECPoint, для BigInteger только это не требуется). Реализация выполняется только частично в аппаратных средствах (с использованием сопроцессоров RSA и ECC) и частично в программном обеспечении, поэтому она менее устойчива к атакам с боковым каналом и отказом.

Автор: petrs Размещён: 05.12.2018 09:03
Вопросы из категории :
32x32