Ищете встроенную библиотеку C для работы с большими числами, которые не используют стандартную libc?

Мне приходится работать с очень большими числами, которые могут составлять 2048 байт для реализации RSA. Согласно правилам автомобильного домена, я не могу использовать библиотеку bignum, которая использует стандартную libc. Я искал GMP и Polarssl, но все они используют malloc() и другие вещи.

Итак, есть ли доступная библиотека/метод, который не полагается на libc, а также управляет такими большими числами? ???


person user3679091    schedule 30.05.2014    source источник
comment
Я не уверен, соответствует ли это вашим требованиям, но ознакомьтесь с библиотекой BigDigits. .   -  person kkrambo    schedule 30.05.2014
comment
Вам нужно более четко определить, что неприемлемо в libc. Вы можете изменить источник, чтобы не использовать распределитель, если это ваша проблема. Я думаю, что было бы лучше сосредоточиться на вопросе, чем просить рекомендации. Т.е. часть метода вашего вопроса многообещающая.   -  person artless noise    schedule 02.06.2014


Ответы (1)


Я не думаю, что вы найдете какую-либо приличную библиотеку C с большими целыми числами, которая не использует malloc, calloc и, возможно, realloc или любое другое динамическое распределение, потому что весь смысл чисел произвольной точности состоит в том, чтобы выйти за пределы ограниченного, размер стека, зависящий от платформы, и, во-вторых, это гораздо более гибкий метод, чем выделение статической памяти во время компиляции.

Я предполагаю, что нужно адаптировать пакет mini-gmp для преодоления ваших конкретных ограничений. (вы найдете его в главном каталоге вместе с некоторыми тестами). Он содержит один заголовочный файл и файл исходного кода C, поэтому "отрезать" libc зависимость должно быть намного проще, чем полнофункциональный выпуск, однако это будет не так быстро, поскольку GMP в значительной степени зависит от высокооптимизированного ассемблерного кода. для различных архитектур ЦП.

Как предложил kkrambo, вы также можете попробовать библиотеку BigDigits. с опцией NO_ALLOCS, которая доступна с версии 2.2:

Добавлен параметр NO_ALLOCS для компиляции библиотеки «mp» без использования выделения памяти.

person Grzegorz Szpetkowski    schedule 03.06.2014
comment
Библиотека BigDigits включает базовую библиотеку, для которой выделение памяти можно отключить с помощью NO_ALLOCS определение препроцессора. Затем основная библиотека будет использовать фиксированные массивы, и вы можете настроить размер этих массивов в зависимости от вашего приложения. - person kkrambo; 04.06.2014
comment
@kkrambo: я этого не заметил, ответ отредактирован, спасибо за просвещение :-) - person Grzegorz Szpetkowski; 04.06.2014